在我的spring-application中,我尝试设置一个cookie,然后重定向到读取cookie的页面。重定向到另一个网页有效,但设置cookie仅在IE9中失败。
Cookie cookie = MyCookieHandler.createCookie(parameters, domain);
response.addCookie(cookie);
重定向处理购买设置ModelAndView
modelView = new ModelAndView("redirect:" + getCallback());
正如我所说,在FF3 +,Chrome和IE7 / IE8中工作正常。我的应用程序有什么问题?有什么建议吗?
答案 0 :(得分:5)
我在IE 8,9和10中遇到过类似的问题,而缓存控制标题也无济于事。在进一步研究之后,我不得不放置一个P3P privacy policy(来自较旧的Java Web应用程序)并且IE正确地存储了cookie而没有缓存控制头。
此政策格式目前仅受到Internet Explorer的尊重,但提供了唯一可靠的方法来管理Cookie,而无需在IE隐私设置中进行手动更改。 P3P隐私策略分为两部分:策略文件和紧凑策略头。紧凑的政策标题似乎运作良好。不同类别的P3P具有紧凑的代码,以简化标题,例如, navigation => NAV。至少,我会从紧凑政策的INT,NAV和UNI代码开始。
以下是两个如何传回标题的示例:
Grails/Java:
response.setHeader("P3P", "CP='INT NAV UNI'");
PHP:
header('P3P:CP="INT NAV UNI"')
答案 1 :(得分:3)
经过一些尝试后,我添加了以下内容:
response.addHeader("Pragma", "no-cache");
response.addHeader("Cache-Control", "no-cache");
现在它适用于我,不知道这是否是正确的解决方案,并且不知道为什么缓存在IE9中有所不同,但现在它可以正常运行...谢谢你们。
答案 2 :(得分:2)
之前我遇到了重定向失败的问题。它奇怪地似乎在Firefox中工作,但在IE中失败了。解决方案是在重定向语句中添加一个完整的URL,即
http://foo.com/new_site.html
而不是
new_site.html