我疯狂地使用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调用存储。
答案 0 :(得分:2)
这可能是CORS的问题(跨源资源共享,即客户端的域和AJAX调用的目标不同)。要使cookie在CORS配置中正常运行,您需要将withCredentials
标志设置为true
。怎么做取决于你的AJAX库(如果你使用的话)。
答案 1 :(得分:0)
在您对ajax的近距离响应中,您可以设置您的Cookie
document.cookie = "token=Custom eyJ0aW1lc3RhbXAiOiIxNDI0NzE5Mzc5ODY3IiwgImlkIjoiNTRlNzZkZGU2ZDk3ZGM1MjYxZjQzMzFlIiwgInNpZ25hdHVyZSI6Im5tZnFGeEEvYlc0TFJGNFJNb3dBZXJZOUw0aWw0aEorcFh1YUt5b3VFK0k9In0=;domain=.localhost.com;path=/";