【问题标题】:Browsers do not set cookie浏览器不设置cookie
【发布时间】:2014-08-10 11:59:03
【问题描述】:

我使用 nopCommerce 平台开发了一个 ASP.NET MVC 网站。在生产服务器上一切正常,但我最近在开发服务器上遇到了关于 cookie 的问题。浏览器接收到 cookie,但没有设置它。我可以使用浏览器开发工具在标题中看到 Set-Cookie 语句或在 cookie 选项卡中看到实际的 cookie。为什么浏览器不设置这个cookie?

Set-Cookie:Pentrugatit.client=78deb2e0-59fb-4193-a53e-da35377ece8b; expires=Fri, 19-Jun-2015 19:33:10 GMT; path=/; HttpOnly

只要我的开发服务器开启,你就可以访问网站here

更新:

我还在网络中的另一台计算机上进行了测试。同样的事情正在发生。 cookie 未设置,尽管它们是在响应标头中收到的。

更新 2:

它与到期日期有关。如果我删除了 cookie 的 expires 属性,那么它会成功设置为会话 cookie。但我不明白问题是什么。我的系统日期设置正确,cookie过期日期也设置正确,根据specifications.

任何想法可能是什么问题?

【问题讨论】:

  • 我有 Chrome - 版本 35.0.1916.153 m。我可以注册一个新用户,并在your site 中使用新用户登录。你能用隐私浏览测试一下吗?
  • 对我来说也不适用于私人浏览...您是否还可以测试是否可以在不登录的情况下将产品添加到购物车?有一个不同的cookie。将一些产品添加到购物车中,然后查看购物车页面。

标签: asp.net asp.net-mvc cookies browser nopcommerce


【解决方案1】:

您使用的是哪个版本的 nopCommerce?

nopCommerce 有一个 browserCaps 功能,可以阻止未知浏览器(然后被视为机器人)存储 cookie。如果浏览器版本确实通过了 browserCaps 中的规则,旧的 browserCaps 可能会错误地将有效的浏览器识别为机器人。

该文件位于:Presentation\Nop.Web\browserCaps.config。如果您使用的是旧版本的 nopCommerce,您只需复制同一文件的最新版本 (nopCommerce 3.30) 即可替换当前版本。

:)

2014 年 6 月 24 日更新:

经过一番分析,发现 IIS 返回的日期是错误的。类似问题:https://serverfault.com/questions/217343/date-header-returned-by-iis7-is-wrong

【讨论】:

  • 感谢您的回答。我正在使用 nopCommerce 3.10。我下载了 3.30 的源代码并检查了 browserCaps.config 文件中的差异,但没有任何差异。所以这不是问题。另外,我解释说我在响应中收到了cookie,但是浏览器中没有设置这个cookie。非常欢迎任何其他想法。
  • 我不确定您的 cookie 为何显示为“Pentrugatit.client=...”。它应该是“Nop.customer=...”。你在那里改变了什么?也许您已经更改了 WebWorkContext.cs? :)
  • 是的,我刚刚改了名字。更改后一切正常。我认为这个问题与 cookie 名称无关。我只更改了 cookie 名称,没有其他任何内容。
  • 当我检查响应头时,我看到服务器发回的日期是 - 日期:星期二,2017 年 9 月 26 日 11:45:24 GMT。我相信正确的行为是根据服务器日期而不是浏览器日期计算到期时间。这可能是原因。也许您应该将服务器日期重置为准确的日期?
  • 到期日以服务器日期为准。代码如下:cookie.Expires = DateTime.Now.AddHours(24*365);。 “也许您应该将服务器日期重置为准确的日期”是什么意思?
猜你喜欢
  • 2014-05-07
  • 2020-06-06
  • 1970-01-01
  • 2018-10-26
  • 2017-12-17
  • 2013-08-07
  • 1970-01-01
  • 2012-09-06
相关资源
最近更新 更多