【发布时间】:2012-01-04 19:31:07
【问题描述】:
我是一个 MVC/ajax 项目的程序员,该项目从客户那里获得了大量流量。我们已经看到一个或两个孤立的实例(每天)控制器操作没有从客户端接收参数。
长话短说:这些动作是通过 jQuery ajax 调用的,并且只有在浏览器导航到另一个页面时进行 ajax 调用时,动作参数才为空。 IE点击一个链接,然后触发一个ajax调用。
我围绕这些调用添加了一些粗略的验证,以确保我们实际上没有在 ajax 数据中传递空值,但这并没有缓解问题。下面是其中一个调用的示例。
var searchValue = _txtSearch.val().trim();
if (searchValue === null
|| searchValue === undefined
|| searchValue.length < _minimumLengthForSearch) {
_txtSearch.focus();
return;
}
// clear out the value when launching
_txtSearch.val('');
$.post(_quickSearchUrl,
{ searchString: searchValue },
function (data) {...},
"json");
我发现an old IEBlog post 表明 IE 可能会以不同于其他浏览器的方式处理这种情况。我很好奇以前是否有其他人遇到过这种现象。同样,我只能在 IE 中重现此问题,并且只能在页面导航期间重现。
编辑:由于某种原因,在 Fiddler 处于活动状态时很难重现此异常,但是当我设法 Fiddler 时显示以下错误消息:
Fiddler 在会话 #4 中检测到协议违规。 Content-Length mismatch: Request Header 指示 24 字节,但客户端发送了 0 字节。
【问题讨论】:
-
嗨@Will,你有没有找到解决这个问题的办法?我遇到了完全相同的问题,因此将不胜感激您的任何指示。干杯。
-
我们覆盖了 OnAuthorization 并手动检测了发生这种情况的情况。我们专门检查了请求是否是ajax请求,然后内容是否匹配内容长度。这并不理想,但它确实有效。
标签: model-view-controller internet-explorer jquery