我开发了一个解决方案,该解决方案依靠 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/