2010-09-23 11 views
20

Gzip/deflated verisi çıktı almak isteyen bir web servisim var. Hizmetin ham JSON ile veya wget ve curl kullanarak gzip'd JSON ile yanıt vereceğini doğruladım.jQuery'yi gzip/deflate etkinleştirilmiş URL'ler için AJAX çağrıları yapmaya zorlamak mümkün mü?

Bu web servisini jQuery AJAX çağrısını kullanarak kullanmak istiyorum.

Varsayılan olarak, jQuery'nin sağladığı $ .ajax çağrısı, web sunucusunun gzipli verilerle yanıt vermesi için gereken "Accept-Encoding: gzip" HTTP istek başlığını eklemez. Ben başlık eklemek için jQuery'nin kendi yöntemlerini kullanırken

Ancak, örneğin:

Refused to set unsafe header "Accept-Encoding" 

o kadar jQuery zorlamak mümkün mü:

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

sonra aşağıdaki hata tarayıcı konsolunda görünür AJAX gzip/deflate etkin URL'leri çağırır mı?

Değilse, jQuery'deki bir eksiklik mi, yoksa AJAX ile daha temel bir şey mi?

+1

Tarayıcı, gzip/deflate kabul edip etmediğine karar verir. "Faking" bu veri bozulmasına yol açabilir. – jwueller

cevap

38

Tarayıcılar, XHR istekleri de dahil olmak üzere, kabul-kodlama üstbilgisini uygun şekilde otomatik olarak ekler. Bunu DOM/JS düzeyinde yapmanız gerekmez.

+0

Teşekkürler, haklısınız! Sunucu kayıtlarımı daha yakından kontrol etmeliydim. – Lee

+0

HTML5 Hybrid uygulamaları için de bu doğru mu? Mobil cihazlarda, webview kapsayıcısında çalışıyor ....? – demaniak

+0

@demaniak: Olmalı, evet. Belirli bir web görünümünde farklı davranışlar görüyor musunuz? –

İlgili konular