出于某种原因IE11(仅IE11,与其他IE9和IE10一起测试)不会在我一直在工作的网站上创建会话。所以这意味着诸如站点登录之类的基本功能将无效。
在其他浏览器上,这是完美的。
我研究了一下,发现IE不适用于带有下划线的域名但是我的域名没有,所以可能是什么问题? 谢谢!
答案 0 :(得分:24)
IE 11不喜欢cookie中的域值。把它留空。
IE 11错误:
Set-Cookie: kohanasession=foobar; expires=Tue, 09-Apr-2016 01:01:01 GMT; path=/; domain=tc.mk; httponly
正确使用IE 11:
Set-Cookie: kohanasession=foobar; expires=Tue, 09-Apr-2016 01:01:01 GMT; path=/; httponly
答案 1 :(得分:6)
我知道这已经过时了,但希望这有助于将来的某些人。
IE11中的cookie中不能包含空白expires=;
值。您只需完全退出expires
字段。
答案 2 :(得分:4)
这可能只适用于其他域Cookie,但如果有人通过Google发现此内容(就像我一样),这可能有所帮助。
IE11可能不会根据其隐私设置设置Cookie。
这对我有用:
(互联网选项 - >隐私权 - >高级 - >启用所有Cookie案例)
答案 3 :(得分:1)
我最近自己遇到过这个问题。就我而言,问题是由执行" ClearAuthenticationCache"成功登录后命令。执行该命令以删除HTTP身份验证,但事实证明它也会删除会话cookie。
所以我建议删除" ClearAuthenticationCache"如果您在登录后执行它,请致电。
document.execCommand("ClearAuthenticationCache");
有关详细信息,请参阅以下链接:https://blogs.msdn.microsoft.com/ieinternals/2010/04/04/understanding-session-lifetime/
答案 4 :(得分:1)
我遇到了这个问题,因为我正在运行单页Vue应用程序。我将cookie设置为一条路由,然后立即路由到另一个“页面”。但是,似乎 IE直到下一页加载之前,IE才会发送Cookie 。因此,我不得不使用浏览器重新加载页面,而不是使用pushState。
答案 5 :(得分:0)
查看服务器发送的cookie到期日期似乎是昨天。是否在服务器上正确设置了日期时间?
答案 6 :(得分:0)
您正在设置其中一个会话Cookie两次:
Set-Cookie: PHPSESSID=3iv5l4tn2ugkbf4vt09lilsi06; path=/
Set-Cookie: identity=1468380643; expires=Mon, 09-Jan-2017 12:31:46 GMT; path=/; domain=.tc.mk; httponly
Set-Cookie: kohanasession=u5rrhtaj731h3p9s44jhp0k612; expires=Tue, 09-Feb-2016 12:31:46 GMT; path=/; domain=tc.mk; HttpOnly
Set-Cookie: kohanasession=u5rrhtaj731h3p9s44jhp0k612; expires=Tue, 09-Feb-2016 12:31:46 GMT; path=/; domain=tc.mk; httponly
互联网资源管理器不会在连续的通话中重新发送此Cookie信息,而例如Chrome会选择其中一项“kohanasession”'。尝试发送' kohanasession'只有一次。
您在Cookie中设置的域名也是' tc.mk',而您有重定向到www.tc.mk的SEO。我认为IE在这种情况下不会使用cookie作为www。尝试将其配置为www.tc.mk
答案 7 :(得分:0)
正如Martin Beeby建议的那样,请检查您的cookie和&在服务器上正确设置日期时间。
我已检查过您网站的会话&甚至连铬都似乎过期了。
似乎有一些关于cookie创建/到期日期和问题的问题。 IE的行为与基于chrome的浏览器不同。不同的cookie有不同的时间。
答案 8 :(得分:0)
我在使用其他设置时遇到了类似的问题,我想分享一下问题所在以及如何解决。希望它将为遭受苦难的人们提供解决方案的想法。
设置
'/api/': {
target: 'some-domain.com',
logLevel: 'debug',
secure: false,
changeOrigin: true,
pathRewrite: {
'^/api': '/api'
}
}
问题#1
由于我的身份验证服务在 some-domain.com 上设置了Cookie,而我的React App在 localhost 上运行,因此该请求未附加该Cookie ,而我的身份验证流程失败。
解决方案
我不得不重写cookie域,所以我将这一行添加到了webpack的代理配置中
cookieDomainRewrite: {
'.some-domain.com': 'localhost'
}
在webpack.config.js中看起来像这样
devServer: {
...
proxy: {
'/api/': {
target: 'some-domain.com',
logLevel: 'debug',
secure: false,
changeOrigin: true,
pathRewrite: {
'^/api': '/api'
},
cookieDomainRewrite: {
'.some-domain.com': 'localhost'
}
}
}
...
}
所以这在chrome,firefox上还可以...但是在IE 11中已损坏。
由于该线程先前的帖子中提到的原因,IE 11不支持域 localhost ,所以当重写发生时,cookie将丢失。
我最后要做的更改是
cookieDomainRewrite: {
'.some-domain.com': null
}
这将使域默认为localhost,同时保持其对IE 11的有效性。
总结
使用Cookie和IE时,请确保:
答案 9 :(得分:0)
为了使cookie持久性功能能够按预期在IE11中正常工作,我发现必须使用toGMTString()方法(我尝试了toGMTString()和toUTCString())用于过期创建Cookie时的字段。在添加此代码之前,cookie将在关闭浏览器后不再存在。
示例:
var expiryDate = new Date();
expiryDate.setTime(expiryDate.getTime() + (3650 * 24 * 60 * 60 * 1000));
document.cookie = 'name=value' + '; expires=' + expiryDate.toGMTString() + ';path=/';
答案 10 :(得分:0)
我上下搜索,但找不到解决我问题的方法。调试后,我意识到IE(与其他浏览器不同)需要PATH部分以'/'来 start 。我有我的行“ subdir /”,并且必须将其前缀为“ / subdir /”才能满足IE的要求。