我在我的实时站点上收到一个错误,我在我的开发环境中没有看到它,它似乎只发生在 Chrome 上。我环顾四周寻找解决方案,我发现只有 Auth cookie 存在问题。(实际上我过去曾提出过关于 chrome 和 auth cookie 的问题)但这是不同的。
我将用户购物车存储在 cookie 中。我像这样设置cookie
HttpCookie responseCookie = HttpContext.Response.Cookies[CartHelper.CART];
responseCookie.PackCartCookie(vm.Cart);
扩展方法 PackCartCookie 设置 cookie 值的地方像这样
cookie.Value = HttpUtility.UrlEncode(cookieValue);
此结果是使用以下设置存储的 cookie
- 域 = www.foo.com
- 原始大小 = 230b
- 路径 = /
- 过期 = 会话
- HttpOnly = HttpOnly
- 值 = 加密
当用户与站点交互时,似乎正在创建购物车 Cookie,但它会不时丢失或丢弃。当我查看 Elmah 错误并查看 HTTP_COOKIE 时,我可以看到所有其他 cookie(我有其他设置的方式与功能相同),但我没有看到购物车 cookie。
由于这个问题,我不得不更改代码以更具防御性。但正如您可以想象的那样,购物车 cookie 在整个购买过程中都被使用,并且我在响应我接受付款的购买时失败了,但系统崩溃了,因为购物车已经消失并且用户没有收到成功购买的通知。幸运的是,我很早就发现了这一点,并退还了受影响的用户。
我看到问题的用户代理
- Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36
- Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
- Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36