Cookie没有与Ajax调用一起存储

时间:2015-02-23 19:44:59

标签: javascript ajax cookies

我疯狂地使用cookies和ajax调用。

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

127.0.0.1 localhost.com

我在使用ajax调用webservice时尝试设置cookie。以下是我在Chrome调试器中可以看到的响应标题:

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

Chrome永远不会存储Cookie。但是,当我使用Rest client extension并且我调用相同的网络服务时,Cookie会存储在Chrome中!所以我的cookie形式很好,但没有用ajax调用存储。

2 个答案:

答案 0 :(得分:2)

这可能是CORS的问题(跨源资源共享,即客户端的域和AJAX调用的目标不同)。要使cookie在CORS配置中正常运行,您需要将withCredentials标志设置为true。怎么做取决于你的AJAX库(如果你使用的话)。

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

答案 1 :(得分:0)

在您对ajax的近距离响应中,您可以设置您的Cookie

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

Can an AJAX response set a cookie?