2013-09-23 3 views
1

Я пытаюсь отправить пользователю cookie после того, как я его аутентифицирую. все работает отлично, ответ строится в моем коде, но даже после того, как клиент получил ответ, в браузере нет cookie (проверяя его через chrome F12 -> Resources).Отправить Cookie в Post Response WebAPI

Примечание: Я могу видеть ответ отправляется в стельку с моим печенье:

enter image description here

Интересно, что происходит не так и почему браузер не сохраняет куки.

Вот функция WebAPI, которая обрабатывает запрос сообщения:

public HttpResponseMessage Post([FromBody]User user) 
     { 
      IDal dal = new ProGamersDal(); 
      var currentUser = dal.GetUser(user.Username, user.Password); 

      if (currentUser == null) 
      { 
       return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Bad request."); 
      } 
      else 
      { 
       var res = new HttpResponseMessage(); 
       var cookie = new CookieHeaderValue("user",JsonConvert.SerializeObject(new ReponseUser(){username = currentUser.Username, role = currentUser.Role})); 
       cookie.Expires = DateTimeOffset.Now.AddDays(1); 
       cookie.Domain = Request.RequestUri.Host; 
       cookie.Path = "/"; 

       res.Headers.AddCookies(new CookieHeaderValue[] { cookie }); 
       return res; 
      } 
     } 
+0

Ваше изображение показывает «Запрос "заголовки ... Какие значения находятся в заголовках« Ответ »? –

+0

Заголовок запроса содержит файл cookie –

ответ

4

Я обнаружил, что проблема, так как в Firefox печенье было сохранено.

В хроме вы не можете установить печенье с доменом «локальный», так как он считается недействительным доменом (срок действия домена должен содержать две точки в нем) - и, следовательно, печенье является недействительным.

Для того, чтобы решить эту проблему, в случае локального хоста, вы должны либо:

  1. установить домен Null.
  2. установить домен «» (пусто)
  3. установить домен «127.0.0.1»

Это исправление в моем коде:

cookie.Domain = Request.RequestUri.Host == "localhost" ? null : Request.RequestUri.Host; 
Смежные вопросы