22

我有一个愿意输出 gzip/放气数据的网络服务。我已经验证该服务将使用原始 JSON 或使用 wget 和 curl 的 gzip 处理的 JSON 进行响应。

我想使用 jQuery AJAX 调用来使用这个 Web 服务。

默认情况下,jQuery 提供的 $.ajax 调用不会添加 Web 服务器响应 gzip 压缩数据所必需的“Accept-Encoding: gzip”HTTP 请求标头。

但是,当我使用 jQuery 自己的方法添加标题时,例如:

$.ajax({url: 'http://foo.com/service.json',
        beforeSend: function(xhr) { 
            console.log('xhr set'); 
            xhr.setRequestHeader('Accept-Encoding', 'deflate') 
       } 
});

然后在浏览器控制台中出现以下错误:

Refused to set unsafe header "Accept-Encoding"

是否可以强制 jQuery 对启用了 gzip/deflate 的 URL 进行 AJAX 调用?

如果不是,这是 jQuery 的缺点,还是 AJAX 更基本的缺点?

4

1 回答 1

41

浏览器会根据需要自动添加接受编码标头,包括 XHR 请求。您不需要在 DOM/JS 级别执行此操作。

于 2010-09-23T13:19:32.513 回答