为了更好地说明我的问题,问题可能是:
我可以从JSONP请求启动会话吗?
更详细:假设从我的浏览器向myserver.com发出JSONP请求。 myserver.com可以通过JSONP响应设置cookie,以便稍后,当再次向myserver.com发出请求时(直接在doc.host = myserver.com时或通过来自任意doc.host的另一个JSONP请求间接请求)饼干将被发送给它?目前浏览器似乎忽略了我用JSONP响应发送的cookie。 我想要的是什么?我在这里错过了什么?
编辑:这是我的请求,通过一个虚拟本地html加载一个本地js文件,只需获取最新的jquery并加载js文件:$.ajax({
url: "http://my-remote-server/jsonp/service/test",
dataType: 'jsonp',
data: {some:'data'},
success: function(responseData)
{console.log(responseData);}
});
上述JSONP请求的响应是设置cookie。自Chrome报告以来,这已得到确认。 问题是,如果我再次重新执行上述操作,则先前设置的cookie不会被发送回服务器。
编辑2:我去了Chrome Cookie浏览器(在引擎盖下的页面中)并且我无法找到cookie,尽管在JSONP响应中收到了报告(chrome的调试控制台)。这意味着服务器发送它,浏览器看到它然后扔掉它。
答案 0 :(得分:3)
我找到了解决方案,以下是处理此问题的任何人可能感兴趣的一些信息:
来自维基百科的定义:
第三方Cookie是使用地址栏中显示的不同域名设置的Cookie
如果我没有错,这将占所有JSONP设置cookie,第三方cookie的99.99%。在我的情况下,地址栏上显示的地址是 file:// ,这使我的cookie成为第三方。
只要我启用第三方Cookie,它就能正常运行。
作为旁注,Chrome默认情况下不支持file://页面上的Cookie,并且doean不会发出警告或通知此情况。它带来了一些令人头疼的问题。请参阅here和here了解详细信息。
答案 1 :(得分:1)
是。动态图像请求和CSS请求等也是如此。如果它是XHR请求,您甚至可以读取响应头(Set-Cookie等)。
现在如何忽略Cookie?你怎么知道?