是否有可能强制jQuery为启用了gzip/deflate的URL进行AJAX调用?

Lee*_*Lee 22 ajax jquery gzip web-services deflate

我有一个愿意输出gzip/deflated数据的Web服务.我已经验证该服务将使用原始JSON或使用wget和curl的gzip'd JSON进行响应.

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

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

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

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

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

Refused to set unsafe header "Accept-Encoding"
Run Code Online (Sandbox Code Playgroud)

是否有可能强制jQuery为启用了gzip/deflate的URL进行AJAX调用?

如果没有,这是jQuery的缺点,还是AJAX更基本的东西?

Dav*_*ard 41

浏览器会根据需要自动添加accept-encoding标头,包括XHR请求.您不需要在DOM/JS级别执行此操作.