【发布时间】:2011-09-21 19:51:59
【问题描述】:
我目前正在管理一个不是我开发的电子商务网站。开发人员选择这样做,以便当您查看项目时,单击“添加到购物车”按钮使用 jQuery 的“发布”方法通过 Ajax 将项目的 ID 和指定数量发布到“/items/ajax_add_to_cart”。
我收到网站所有者的报告,有两三个客户说他们正在将商品添加到他们的购物车中,但他们的购物车似乎是空的。我调查并在 Apache 访问日志中发现了以下条目(IP 地址和 URL 已更改):
127.0.0.1 - - [19/Sep/2011:12:49:50 -0400] "GET /items/view/1234 HTTP/1.1" 200 12117 "http://www.example.com/items/search/[keyword]" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; WOW64; Trident/5.0)"
127.0.0.1 - - [19/Sep/2011:12:50:15 -0400] "POST /items/ajax_add_to_cart HTTP/1.1" 200 15 "http://www.example.com/items/view/1234" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; Trident/5.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.5; OfficeLivePatch.1.3; .NET4.0C; BRI/1)"
127.0.0.1 - - [19/Sep/2011:12:50:16 -0400] "GET /items/view_cart HTTP/1.1" 200 10305 "http://www.example.com/items/view/1234" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; WOW64; Trident/5.0)"
请注意,当访问“/items/ajax_add_to_cart”页面时,用户代理字符串暗示 Internet Explorer 9 自动进入兼容性视图。这就解释了为什么购物车最终是空的。不过,我根本无法复制它。
关于为什么会发生这种情况的任何想法?我可能会添加<meta http-equiv="X-UA-Compatible" content="IE=Edge"/> 标签来修复它,但我希望能够首先重现问题,只是为了绝对确定发生了什么。
【问题讨论】:
-
我知道你更改了IP地址,所以你引用的不是真实的用户地址,但请注意IE9的默认配置是使用“本地Intranet”中的站点的兼容模式呈现.由于您没有指定实际的 IP 地址,我不知道这是否是这里的问题。这可以在浏览器配置中关闭或使用
http-equiv元标记或 HTTP 标头覆盖。 -
@Spudley 感谢您的帮助,但这似乎不是问题。我知道您可以将域添加到“本地 Intranet”区域,但我认为您不能添加特定页面(在这种情况下为 example.com/items/ajax_add_to_cart )。就像 IE9 自然地进入该页面上的兼容性视图,但仅限于那两个或三个用户。
-
我有疑问,这就是为什么我将其发布为评论而不是答案。但这是我唯一能想到的。我唯一可以建议的另一件事是使用 W3C Validator 检查您的 HTML 有效性。但我想最大的问题是为什么 Ajax 会对浏览器模式产生任何影响? Ajax 事件不会 [不应该] 导致页面刷新,因此它们根本不应该改变浏览器模式。
标签: internet-explorer internet-explorer-9 compatibility-mode