javascript - 如何清除 AJAX GET 调用的 HTTP header ?

标签 javascript ajax internet-explorer http-headers xmlhttprequest

我开发了一个解决方案,该解决方案依靠 AJAX 调用来检索信息并每 10 秒更新一次客户端页面。这工作正常,但我担心代码的可伸缩性,考虑到从客户端传递到服务器并再次返回的 header 的数量和长度。我已经删除了服务器端的一些冗余 header ,主要是与 ASP.NET 相关的 header ,现在我正在尝试减少来自客户端的 header 。

我公司使用的浏览器是IE(版本6,即将升级到7)。这是我当前代码的近似值:

var xmlHTTP = new ActiveXObject('Microsoft.XMLHTTP');

xmlHTTP.onreadystatechange = function() {
    if ((xmlHTTP.readyState == 4) && (xmlHTTP.status == 200)) {
        myCallbackFunction(xmlHTTP);
    }
};

xmlHTTP.open('GET', 'myUrl.aspx');

try {
    xmlHTTP.setRequestHeader("User-Agent", ".");
    xmlHTTP.setRequestHeader("Accept", ".");
    xmlHTTP.setRequestHeader("Accept-Language", ".");
    xmlHTTP.setRequestHeader("Content-Type", ".");
} catch(e) {}

xmlHTTP.send();

尽管I've read可以清除其中一些 header ,但我还没有找到一种在 IE6 中有效的方法。将它们设置为 null 会导致类型不匹配异常,因此我最终只是将它们替换为“.”。暂且。是否有另一种清除它们的方法或减少提交的 HTTP header 的替代方法?

此外,似乎根本无法替换或缩短“Referrer” header 。

最佳答案

根据WD spec

The setRequestHeader() method appends a value if the HTTP header given as argument is already part of the list of request headers.

也就是说,您只能添加 header ,而不能替换它们。

这并不完全符合当前浏览器的行为,但它可能是浏览器的发展方向,在这种情况下,从长远来看,这方面的任何努力都是浪费时间。无论如何,当前浏览器设置 header 的行为千差万别,通常不可靠。

There seems to be no way of replacing or shortening the 'Referrer' header at all.

这不会让我感到惊讶,因为有些人错误地使用“Referer”[sic] 作为访问控制机制。

您可以尝试确保当前页面 URL 不会过长,但老实说,所有这些对我来说都是过早优化的味道。无论您做什么,您的请求都将适合一个 IP 数据包,因此不会有明显的性能差异。

对于 Mibbit(如您链接的博客中提到的)尝试这些东西可能是值得的,因为 Mibbit 吸引了相当惊人的流量,但对于一个简单的公司范围的应用程序,我不认为跨浏览器-and-proxy-testing-burden:end-user-benefit 比率是值得的。

关于javascript - 如何清除 AJAX GET 调用的 HTTP header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/602065/

相关文章:

javascript - jQuery - 将元素添加到数组中

javascript - 使用 jQuery 循环插件绑定(bind)到回调之前时,函数会触发两次

javascript - PHP 无法正常工作

javascript - 使用 AJAX 从表单发送所有数据

javascript - 使您的网站与 IE 兼容 - 从哪里开始?

javascript - 懒网 : Is there something funny about how IE7 does onMouseOver Javascript on li elements with text?

javascript - 自透明对象仅从一侧看起来正确

jquery - 通过 jQuery 提交后显示 Django 表单的验证错误 `.ajax`

javascript - 选择Pinterest上的所有图像以移至另一 block 板

javascript - 对象不支持此操作 IE9 与 CustomEvent 初始化