我在与网站所在的服务器不同的服务器上使用 JSONP 应答 AJAX 调用。它工作得很好,除了在 IE 上,我无法保持 session 。
响应请求的站点使用 Java Servlet。它适用于 Firefox,但我在 IE 中遇到问题,因为它不接受 cookie。 (我可以通过更改安全设置使其工作。)
从那里我尝试将 sessionid 放在请求的 url 中:
listAction: server+'/site/gateway.jsp?current=page&next=something&jsessionid='+session+'&callback=?'
(我写 callback=? 是因为我使用的是 jQuery,这就是你可以做 Jsonp 的方式。)
还是不行。我写错了 session 吗?它还在看我的 cookies 吗?我可以配置我的 servlet 以加载我希望它加载的 session 吗?
最佳答案
这实际上与 iFrame 遇到的问题相同。您需要设置一个 p3p header 。
request.setheader('P3P: CP="NOI ADM DEV COM NAV OUR STP"');
为什么 IE 会阻止您将 cookie 与 JSONP 一起使用,但如果您只添加一些 header 则允许您使用?谁知道。 header 代表隐私政策。而且我猜他们认为恶意黑客不会对他们的隐私政策不诚实。
如果您出售有关您用户的信息或有其他原因担心您的用户提起诉讼,您应该确保您的 p3p header 准确反射(reflect)您的隐私政策,因此您需要做更多的研究。
这是同一个问题,但关于 iFrame:Cookie blocked/not saved in IFRAME in Internet Explorer
关于java - JSONP、Java Servlet 和 Internet Explorer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8364037/