我有一个愿意输出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更基本的东西?
我正在使用jQuery ajax通过HTTP POST调用我的WCF服务.响应是GZIP编码的,这会导致我的环境出现问题.(见这个问题).如果响应不是GZIP编码,一切都很好.
所以看着Fiddler,我看到jQuery生成的查询有以下标题:
Accept-Encoding: gzip,deflate,sdch
Run Code Online (Sandbox Code Playgroud)
如果,通过fiddler,我将此值更改为None,则响应不会被压缩,这就是我想要的.我需要做的就是更改"Accept-Encoding"标头中的值.
似乎无法通过.ajax命令更改此标头值.(见本论坛帖子).
任何人都可以告诉我有什么选项可以更改此标头值.
这是我目前的尝试.我的headers参数似乎被忽略了.
$telerik.$.ajaxSetup({
accepts: 'application/json, text/javascript, */*'
});
var parameters = {
"playerId": args.playerId
};
var dataInJsonFormat = '{ "playerId": ' + args.playerId + '}';
var ajaxCallParameters = {
accepts: 'application/json, text/javascript, */*',
async: true,
cache: false,
contentType: "application/json; charset=utf-8",
url: "../Services/CmsWebService.svc/SendUpdateRequestToPlayer",
headers: { "Accept-Encoding" : "None" },
type: "POST",
data: dataInJsonFormat,
dataType: 'json',
error: function (jqXHR, textStatus, errorThrown) {
var errorString …Run Code Online (Sandbox Code Playgroud) 我正在尝试从GAE服务器gzip响应,但在Content-Encoding中收到null.
我有以下代码:
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/json; charset=utf-8"); //"application/json; charset=utf-8"
connection.setRequestProperty("Accept-Encoding", "gzip");
connection.setRequestProperty("User-Agent", "gzip");
connection.setUseCaches (false);
connection.setDoInput(true);
connection.setDoOutput(true);
//write
//read
System.out.println("Content-Encoding " + connection.getContentEncoding());
Run Code Online (Sandbox Code Playgroud)
我已经读过,GAE服务器会自动压缩.那可能是什么问题呢?