ajax - Chrome 和 IE 未设置响应 Cookie

标签 ajax google-chrome cookies asp.net-web-api internet-explorer-10

我试图弄清楚为什么 Chrome (26.0.1410.64) 和 IE10 似乎无法识别我在来自 ASP.NET Web API Controller 的响应中设置的 cookie。这是情况:

我的页面上有一个下拉菜单登录表单,它对我的​​ Web API 方法(通过 HTTP POST)进行 ajax 调用,并且该 Web API 方法返回一些 JSON 数据并在响应中设置一个 cookie(使用 HTTP header ) .它在 Firefox 和 Safari(所以,WebKit)中完美运行,但不适用于 Chrome 或 IE。 Chrome 和 IE 似乎完全忽略了响应中发回的 cookie。我已经验证(使用 Fiddler)cookie 是在响应中发回的,所以我知道它在那里 - 我不明白为什么 IE10 和 Chrome 不接收它。

有任何想法吗?它与Chrome和IE10如何处理ajax请求中的响应cookie有关吗?

最佳答案

所以我想出了这个问题,尽管这不是我真正愿意接受的解决方案。我想我只需要处理它并始终使用 Firefox 在我的本地机器上测试该站点。

所以这里的问题是:

当我通过在本地计算机上的 Visual Studio 和 IIS 运行我的站点在本地运行它时,它会在类似 http://localhost:1839/ 的地址创建一个网站。 .出于某种原因,当 ajax cookie 是“localhost”时,IE10 和 Chrome 会忽略它——但当它是真实的主机名或 IP 地址时,则不会。因此,如果我编辑我的主机文件并创建一个像 localhost.com 这样的通用条目并将其指向 127.0.0.1:1839,那么在 IE 和 Chrome(和 Firefox 仍然如此)中一切正常。

这是我使用 localhost:1839 的时候ajax cookie 只适用于 Firefox 的地址。

所以我最终做的是将我的网站部署到不同的测试 IIS 服务器(在另一台机器上),我的本地主机文件中有一个 test.mydomain.com 条目 - 指向测试 IIS 服务器的 IP 地址。现在 IE、Chrome 和 Firefox 都接受来自这个伪造的“test.mydomain.com”域的 ajax cookie。

因此,对于那些在 ajax 请求中发回 cookie 的人 - 请注意 Chrome 和 IE 的“本地主机”问题。

关于ajax - Chrome 和 IE 未设置响应 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16263305/

相关文章:

javascript - ajax 无法在 codeigniter 中工作,无法在 Controller 中发布或启动该方法

javascript - Jquery AJAX 返回原始数据还是现成的 HTML?

css - 修复 Chrome 中的视口(viewport)宽度

javascript - FF 中出现 "$.cookie is not a function"错误,即使我包含它

javascript - 脚本在 woocommerce "place order"部分不起作用

javascript - 更新面板中的按钮不会由 JavaScript 触发

css - chrome 页脚重叠内容尽管清晰 :both used

java - 使用远程 'chromedriver.exe' 文件设置 Chrome WebDriver

google-chrome - 如何禁用 http header 的缓存?

javascript - JS + PHP - 删除特定的cookie