使用编码gzip(iis7)的Ajax发送请求以下是发送请求的代码 有人可以帮我解决我的代码中的错误。
提前致谢
function sendRequest(url, callback, postData)
{
var req = createXMLHTTPObject();
if (!req) {
return;
}
var method = (postData) ? "POST" : "GET";
req.open(method, "xml/" + url, true);
req.setRequestHeader('User-Agent', 'XMLHTTP/1.0');
if (postData) {
req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
req.setRequestHeader("Content-Encoding", "gzip");
}
req.onreadystatechange = function() {
}
req.send(postData);
}
答案 0 :(得分:4)
考虑到安全性,浏览器不允许您覆盖某些标题,包括“Content-Encoding”。
答案 1 :(得分:2)
透明地高度压缩对XMLHttpRequest的请求的一种方法是使用HTTP / 2(例如,通过CloudFlare服务您的网站)。
使用HTTP / 2时,尽管HTTP标头没有说Content-Encoding: gzip
,但基础HTTP / 2协议会压缩所有内容。
与gzip相比,它的压缩效果也好得多,因为:
您可以通过以下方式see if your server使用HTTP / 2:
Headers Preview Response Timing
)Protocol
h2
而不是http/1.1
我不建议使用JavaScript压缩库,因为这会导致速度降低和效率低下。
答案 2 :(得分:1)
问题似乎与标题无关,而是与压缩有关。
您似乎无法压缩postData。
如果postData已经压缩,则无需尝试手动设置内容编码。
如果不是,请让浏览器与服务器协商传输编码(这是协议的一部分并自动完成,服务器说它是否接受它,但我认为很少这样)或者(如果你真的需要)自己编码。此SO问题表示要压缩browseride的库:JavaScript implementation of Gzip