2011-04-22 66 views
0

我正在處理應用程序的代理。我需要將特定頁面上的所有AJAX調用轉換爲跨域,以便我的代理可以完成這些ajax調用。修改XMLHttpRequests以使它們跨域

我一直在尋找到與窗口結合JQuery.beforeSend可能性,有三個問題:

  1. 如何其實我可以添加數據類型的附加參數:JSONP;到頁面上的所有AJAX調用。

  2. 這會不會綁定功能與所有的XMLHttpRequest的或僅通過jQuery $阿賈克斯,和$ .get,$ .post的做了要求,等功能

  3. 如果我添加數據類型:JSONP;它只會將此添加到通過jQuery完成的調用或通過任何庫或源自瀏覽器的所有調用

有沒有更好的方法來做到這一點。任何其他建議來解決這個問題。由於我不知道外部HTML,因此通過AJAX調用的URL更加困難,因此通過我的代理域進行路由並不是我的首選方式。

感謝

回答

1
  1. 你可以陰影現有的jQuery的方法...

    var jQueryAjax = $.ajax; 
    
    $.ajax = function(settings) { 
        settings.type = 'jsonp'; 
        jQueryAjax(settings); 
    } 
    

    認爲這應該工作。

  2. ajax()是jQuery中的AJAX請求的低級接口,但我不確定他們是否調用它。 getJSON()似乎打電話給get()

  3. 只有當您使用的服務支持JSONP時,纔會有用jsonp

+0

你好亞歷克斯, 謝謝,如果我添加一個額外的頭(起源:)所有請求如何。如果我添加請求所在頁面的域,會有幫助嗎? – 2011-04-22 09:24:35

+0

@Sparsh我不確定那會工作。 – alex 2011-04-22 09:25:55

0
  1. 設定的數據類型,以JSONP(數據類型: 「JSONP」)
  2. 隨着JSONP只能處理GET請求,請參見3.
  3. 只給您添加JSONP作爲數據類型
  4. 通話
+0

Hello Ivo,謝謝,如果我爲所有請求添加額外的標題(來源:),那麼該如何?如果我添加請求所在的頁面的域作爲Origin頭部,那會有幫助嗎? – 2011-04-22 09:25:16

相關問題