2012-05-14 26 views
0

可能重複:
Is it possible to force jQuery to make AJAX calls for URLs with gzip/deflate enabled?

我在兩個不同的領域要和JSONP。 Domain1使用具有回調參數的$ .getJSON向Domain2請求一些json數據,這很好,沒有問題。

Domain2還可以提供gzip壓縮的json數據。

我想利用此功能,但我不知道如何使用jQuery的$ .getJSON從Domain1請求它。

這是可能的,如果可以,請給我一個例子(或任何其他解決方法)。

謝謝!

+1

通常情況下,如果您有一個指定爲zip的「Accept」頭,透明地這將由瀏覽器處理。 –

+0

@ Dave-Newton如何將標題添加到調用中? – Nik

+0

@PedroFerreira無法確定它是否是,跨域是我希望有人能夠解釋的問題的一部分。從我所瞭解的ajax調用和jsonp調用不完全相同。 – Nik

回答

1

gzipping你的http流量是一個服務器選項,對與內容一起工作的實際進程(你的腳本)是透明的。瀏覽器負責管理gzip,但只有當連接的兩端都支持它時(這在請求頭中進行通信),它纔會起作用。你也必須啓用它的服務器端(例如在Apache中使用mod_deflate)

您聲明domain2上的服務器支持gzip,所以如果您正確配置它,所有「gzippable」的流量將自動進行gzip壓縮。你不需要額外的工作。

如果您想知道yrou流量是否被gzip壓縮,請查看您的jsonp調用的響應頭。他們應該說使用gzip。例如,你可以在chrome中做到這一點。

+0

謝謝,你是對的。在瀏覽器已經處理了壓縮後的數據之後,我正在檢查響應的大小。在檢查了響應頭之後,它清楚地顯示它被壓縮了,並且它更小。我只是沒有仔細看......我的壞。 – Nik

+0

好的,沒問題。很好,你知道了。 – koenpeters

0

我不認爲有一種方法可以告訴瀏覽器在這種情況下該做什麼。如果這是我們正在討論的JSONP請求,那麼由您的瀏覽器決定發送哪些頭文件。 JSONP請求只是另一個<script>標記。