Ответ Cookie не устанавливается Chrome & IE

Я пытаюсь понять, почему Chrome (26.0.1410.64) и IE10, похоже, не распознают cookie, который я установил в своем ответе от ASP.NET контроллер веб-API. Вот ситуация:

У меня есть форма входа в раскрывающееся меню на моей странице, которая делает вызов ajax моему методу Web API (через HTTP POST), и этот метод Web API возвращает некоторые данные JSON, а также устанавливает cookie в ответе (используя заголовки HTTP). Он отлично работает в Firefox и Safari (так, WebKit), но не в Chrome или ТО ЕСТЬ. Chrome и IE, похоже, полностью игнорируют cookie, который отправляется обратно в ответ. Я проверил (используя Fiddler), что cookie отправляется обратно в ответ, поэтому я знаю, что он есть - я не могу понять, почему IE10 и Chrome не берут его.

какие идеи? Имеет ли это какое-то отношение к тому, как Chrome и IE10 обрабатывают куки-файлы ответов в запросах ajax?

3 ответов


поэтому я понял проблему, хотя это не то, что я действительно хотел бы принять в качестве решения. Думаю, мне просто придется иметь дело с этим и всегда тестировать сайт на моей локальной машине с помощью Firefox.

Итак, вот проблема:

когда я запускаю свой сайт локально, запустив его из Visual Studio и IIS на своем локальном компьютере, он создает веб-сайт по адресу http://localhost:1839/. По какой-то причине AJAX cookies игнорируются IE10 и Chrome, когда это "localhost", но не когда это реальное имя хоста или IP-адрес. Поэтому, если я редактирую файл хоста и создаю общую запись, например localhost.com и укажите его на 127.0.0.1: 1839, тогда все будет отлично работать в IE и Chrome (и Firefox тоже).

это когда я использую localhost:1839 адрес, который ajax cookie работает только в Firefox.

Так что я закончил тем, что развернул свой веб-сайт на другом тестовом сервере IIS (на другой машине), что у меня есть test.mydomain.com запись в файле локального хоста for-это указывает на IP-адрес тестового сервера IIS. Теперь IE, Chrome и Firefox все принимают файл cookie ajax из этого поддельного "test.mydomain.com" домен.

поэтому для тех из вас, кто отправляет куки - файлы обратно по запросу ajax-остерегайтесь этой проблемы "localhost" с Chrome и IE.


домен в наборе cookie, скорее всего, конфликтует с использованием localhost. Если вы отредактируете файл hosts и добавите псевдоним, он сделает test.mydomain.com укажите на локальную машину:

  • внутри c:\windows\System32\drivers\etc\hosts добавить следующее:
    • 127.0.0.1 test.mydomain.com
  • запустите веб-сервер в Visual Studio
  • закройте все браузеры, затем загрузите test.mydomain.com

это сводило меня с ума в течение часа, пока я не нашел этот ответ. Я тестировал сервер на основе Торнадо, реализующий обратный вызов аутентификации Auth0. Сервер использовал HTTPRequest.set_secure_cookie (), который был проигнорирован Chrome. Использование Firefox обошло проблему, как и тестирование из Chrome на другом рабочем столе.