我开发了一种解决方案,该解决方案依赖AJAX调用来每隔10秒检索一次信息并更新客户端页面。这样做工作正常,但考虑到头的数量和长度从客户端传递到服务器再传递回来,我担心代码的可伸缩性。我在服务器端删除了许多冗余标头,这些标头大多与ASP.NET相关,现在我试图减少来自客户端的标头。

我公司使用的浏览器是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可以清除其中的某些标头,但我还没有找到一种在IE6中起作用的方法。将它们设置为null会导致Type Mismatch异常,因此我最终只是将它们替换为'。暂且。是否有清除它们的另一种方法或减少提交的HTTP标头的替代方法?

另外,似乎根本没有办法替换或缩短“ Referrer”标头。

最佳答案

根据WD spec


  如果作为参数提供的HTTP标头已经是请求标头列表的一部分,则setRequestHeader()方法将附加一个值。


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

这与当前的浏览器行为并不完全匹配,但可能是浏览器的发展方向,从长远来看,在这方面的任何努力都是在浪费时间。无论如何,当前带有设置标头的浏览器行为千差万别,通常无法依靠。


  似乎根本没有办法替换或缩短'Referrer'标头。


鉴于有些人错误地使用“ Referer”(原文如此)作为访问控制机制,这对我来说并不奇怪。

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

Mibbit(如您所链接的博客所述)可能值得尝试一下,因为Mibbit会吸引大量的流量,但是对于简单的公司范围的应用程序,我不认为跨浏览器和- proxy-testing-burden:最终用户与标题混淆的比率是值得的。

10-04 19:24