未在iframe应用的IE11 Windows 7上设置Cookie

时间:2019-02-12 23:28:50

标签: cookies iframe office-js outlook-web-addins

我正在使用Outlook Web加载项和Rails Webapp。通过Web上的Outlook启用时,Web加载项将作为iframe加载。该页面是我们Rails应用程序的登录页面。我们的Rails应用具有用于身份验证过程的标准Devise设置。

在加载登录页面并输入正确的凭据并单击登录后,整个过程中 cookie都会丢失,我们将再次重定向回登录页面。

当我们查看开发控制台中的“网络”选项卡时,我们看到正在请求/users/sign_in并返回带有要设置的正确响应标头和cookie。成功击中/users/sign_in通常会将iframe重定向到/dashboard/stats,并在标头中包含所有正确的会话和cookie。但是,事实并非如此,我们发现/dashboard/stats的请求标头没有正确的cookie /会话,而是丢失了它们。结果,在Rails应用程序中,我们看到没有正确的cookie / devise会话,将发送401并重定向回登录页面/users/sign_in

仅在Windows 7上的 Internet Explorer 11(版本:11.0.9600.19230)会发生此问题

我已经在Windows 10的更高版本的IE11上测试了同样的东西,并且工作正常:所有cookie和会话属性均已正确设置,并且我们成功登录。我也在Chrome,Safari和Firefox上进行了测试,并且通过了相同的方案。不幸的是,我们需要在Windows 7上支持此版本的IE11(或最新版本)。

我想知道是否有人遇到过类似的问题和/或对这些丢失的cookie的解决方案有什么见识。

1 个答案:

答案 0 :(得分:1)

在浏览了各个论坛之后,看来这是与 P3P标头有关的问题。请记住,我只是发现它是上述IE11版本中的问题。我拥有的最新版本(IE 11.316.17763.0)没有相同的问题。

基本上,在IE11中,如果iframe中的页面没有P3P标头,则浏览器将阻止cookie。您可以通过单击查看>网页隐私报告...

来检查您的网页是否在IE11上被阻止。

如果该问题出现在IE11版本中,则您会在Cookie列上看到您的页面“被阻止”。

通过在Webapp的响应标头中包含P3P标头可以解决此问题。 您可以在this post中阅读更多内容。

如果您不确定P3P标头的值,建议您通读related post

但是,P3P概念似乎已经过时,has been suspended,根据上面的第一篇文章,您不必太担心标题的值。

最后,我建议人们仅在检测到请求是从IE11浏览器发送来的情况下,才对P3P标头的范围进行限定。这是只有IE似乎可以强制执行的操作:其他当前的现代浏览器没有此问题。