【问题标题】:Cookie not stored with Ajax callCookie 未与 Ajax 调用一起存储
【发布时间】:2015-04-25 06:21:08
【问题描述】:

我对 cookie 和 ajax 调用感到疯狂。

我的配置很简单。我在 8282 端口(localhost.com:8282)上运行一个网站。我的网站在 8080 端口(localhost.com:8080)上调用了一些网络服务。当然,我在我的 hosts 文件中添加了一行以避免 localhost 问题:

127.0.0.1 localhost.com

当使用 ajax 调用 web 服务时,我尝试设置一个 cookie。这是我可以使用 Chrome 调试器看到的响应标头:

Set-Cookie:token=Custom eyJ0aW1lc3RhbXAiOiIxNDI0NzE5Mzc5ODY3IiwgImlkIjoiNTRlNzZkZGU2ZDk3ZGM1MjYxZjQzMzFlIiwgInNpZ25hdHVyZSI6Im5tZnFGeEEvYlc0TFJGNFJNb3dBZXJZOUw0aWw0aEorcFh1YUt5b3VFK0k9In0=;domain=.localhost.com;path=/;

Chrome 绝不会存储 cookie。但是,当我使用Rest client extension 并调用相同的网络服务时,cookie 由 Chrome 存储!所以我的 cookie 格式正确,但没有通过 ajax 调用存储。

【问题讨论】:

    标签: javascript ajax cookies


    【解决方案1】:

    这可能是 CORS 的问题(跨源资源共享,即客户端的域和 AJAX 调用的目标域不同)。为了使 cookie 在 CORS 配置中正常工作,您需要将 withCredentials 标志设置为 true。具体操作方法因您的 AJAX 库而异(如果您使用的是其中一个)。

    请看这里:http://www.html5rocks.com/en/tutorials/cors/

    【讨论】:

    • 感谢您的帮助,即使域相同且仅端口更改,是否也视为CORS问题?
    【解决方案2】:

    在您对 ajax 的密切响应中,您可以设置您的 cookie

    document.cookie = "token=Custom eyJ0aW1lc3RhbXAiOiIxNDI0NzE5Mzc5ODY3IiwgImlkIjoiNTRlNzZkZGU2ZDk3ZGM1MjYxZjQzMzFlIiwgInNpZ25hdHVyZSI6Im5tZnFGeEEvYlc0TFJGNFJNb3dBZXJZOUw0aWw0aEorcFh1YUt5b3VFK0k9In0=;domain=.localhost.com;path=/";

    Can an AJAX response set a cookie?

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 2011-09-03
      • 2020-11-18
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2012-11-28
      • 2013-09-21
      相关资源
      最近更新 更多