【问题标题】:Internet Explorer 11 won't set cookies on a siteInternet Explorer 11 不会在网站上设置 cookie
【发布时间】:2014-05-06 13:46:29
【问题描述】:

由于某种原因,IE11(仅 IE11,已与其他 IE9 和 IE10 一起测试)不会在我一直在处理的站点上创建会话。所以这意味着网站登录等基本功能将无法使用。

在其他浏览器上运行良好。

我研究了一下,发现 IE 不适用于带有下划线的域。但我的域没有下划线,所以可能是什么问题? 谢谢!

【问题讨论】:

  • 你找到解决办法了吗?我在 Win 8 上的 IE11 成员拒绝接受会话 cookie 时遇到同样的问题,
  • 我还没有找到解决办法..
  • 我已将域添加到受信任的站点,我已通过安全设置强制接受 cookie,我已重置浏览器,删除所有数据,但 IE11 仍然拒绝接受会话 cookie . Google Chrome 和 FireFox 一样可以正常工作,但 IE 不会让步。
  • 我也遇到了这个问题,已经有 2 个用户表示他们无法登录我的网站。怎么回事,我认为某处存在错误。
  • 我们找到这个问题的答案了吗?我也有同样的问题。尝试删除域属性并没有区别。

标签: internet-explorer cookies internet-explorer-11


【解决方案1】:

查看您的服务器发送的 cookie,到期日期似乎是昨天。您的服务器上的日期时间设置是否正确?

【讨论】:

    【解决方案2】:

    您将其中一个会话 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

    Internet Explorer 不会在连续调用时重新发送此 cookie 信息,而例如 Chrome 将只接受“kohanasession”之一。尝试只发送一次“kohanasession”。

    此外,您在 cookie 中设置的域是“tc.mk”,而您有一个 SEO 重定向到 www.tc.mk。在这种情况下,我认为 IE 不会将 cookie 用于 www。尝试将其配置为 www.tc.mk

    【讨论】:

      【解决方案3】:

      按照 Martin Beeby 的建议,请检查您的 cookie 的过期时间并在您的服务器上正确设置日期时间。

      我已经检查了您网站的会话,甚至在 chrome 中它似乎已过期。

      cookie 创建/过期日期似乎存在一些问题,IE 的行为与基于 chrome 的浏览器不同。不同的 cookie 有不同的时间。

      【讨论】:

        【解决方案4】:

        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
        

        【讨论】:

        • @freeworlder 你能说得更具体点吗?也许您的 cookie 设置代码中有多个错误。
        • 嗨@bebbo,您有参考来验证您的声明吗?
        • @Matt:它解决了我正在工作的项目中的问题。
        • @bebbo 经过大量搜索,我找到了这个答案,最后这个解决方案奏效了。谢谢你!
        • 更多信息:IE11确实接受域,但它接受localhost的域或没有TLD的机器名称,例如http://myservername/ .它也明显地扼杀了带有下划线的子域。见:weblog.west-wind.com/posts/2012/Apr/25/…
        【解决方案5】:

        我知道这是旧的,但希望这对未来的人有所帮助。 在 IE11 的 cookie 中不能有空白的 expires=; 值。您只需将expires 字段完全去掉即可。

        【讨论】:

          【解决方案6】:

          我最近自己也遇到了这个问题。就我而言,问题是由成功登录后执行“ClearAuthenticationCache”命令引起的。执行该命令以删除 HTTP 身份验证,但事实证明它也会删除会话 cookie。

          因此,如果您在登录后执行“ClearAuthenticationCache”调用,我建议您删除它。

          document.execCommand("ClearAuthenticationCache");
          

          更多信息请查看以下链接:https://blogs.msdn.microsoft.com/ieinternals/2010/04/04/understanding-session-lifetime/

          【讨论】:

            【解决方案7】:

            这可能仅适用于另一个域的 cookie,但如果有人通过 Google 找到了这个(就像我一样),这可能会有所帮助。

            IE11 可能不会设置 cookie,具体取决于其隐私设置。

            这对我有用:

            (Internet 选项 -> 隐私 -> 高级 -> 在此处启用所有 cookie 案例)

            【讨论】:

              【解决方案8】:

              我遇到了这个问题,因为我正在运行一个单页 Vue 应用程序。我在一个路由中设置 cookie,然后立即路由到另一个“页面”。但是,似乎 IE 在下一页加载之前不会发送 cookie。因此,我不得不强制浏览器重新加载页面,而不是使用 pushState。

              【讨论】:

                【解决方案9】:

                我在不同的设置中遇到了类似的问题,我想分享一下问题是什么以及我是如何解决的。希望它能为那些受苦的人提供解决方案的想法。

                设置

                1. some-domain.com 上设置身份验证 cookie 的身份验证服务
                2. React 应用程序由 localhost 上的 Webpack Server 捆绑和运行
                3. 请求通过 Webpack 代理到达 some-domain.com。例如
                  '/api/': {
                    target: 'some-domain.com',
                    logLevel: 'debug',
                    secure: false,
                    changeOrigin: true,
                    pathRewrite: {
                    '^/api': '/api'
                    }
                  }
                

                问题 #1

                因为我的身份验证服务在 some-domain.com 上设置了 cookie,并且我的 React 应用程序在 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 时,请确保:

                1. 您的客户端和服务器的域匹配
                2. 如果使用 localhost,则使用 null 作为域值

                【讨论】:

                  【解决方案10】:

                  为了让 cookie 持久性功能在 IE11 中按预期工作,我发现我必须对 expires 使用 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=/'; 
                  

                  【讨论】:

                    【解决方案11】:

                    我到处搜索,但找不到解决问题的方法。调试后,我意识到 IE(与其他浏览器不同)需要 PATH 部分以使用“/”开始。我有我的行 'subdir/' 并且必须将其添加为 '/subdir/' 以满足 IE。

                    【讨论】:

                      猜你喜欢
                      • 2016-05-30
                      • 2020-02-25
                      • 2020-05-17
                      • 1970-01-01
                      • 2021-05-24
                      • 2020-05-08
                      • 1970-01-01
                      • 2023-03-23
                      • 1970-01-01
                      相关资源
                      最近更新 更多