2012-04-19 16 views
0

我在Sencha Touch 2中編寫了一個應用程序,作爲它的一部分,我有許多商店使用ajax代理和json reader從我的外部web服務自動加載。該服務託管在與客戶端不同的域上,因此我必須在服務器上設置Access-Control-Allow-Origin才能使其工作。當在Sencha Touch 2中加載商店時,如何停止額外的OPTIONS http請求?

一切工作順順當當這種設置,但我使用招看要求的性能,我發現我的web服務的每一個電話居然去了兩次。一次作爲OPTIONS請求,然後再次作爲預期的GET。據我所知,OPTIONS請求沒有任何用處 - 至少在我的設置中 - 所以我想擺脫它,使加載性能更快。

有誰知道這是怎麼回事?如果在代理上設置了可以關閉它的配置,那會很棒,但是我還沒有找到它。

感謝您的期待!

回答

5

我想通了這一點,這一切曾與做X-要求,與煎茶用其Ajax調用一起傳遞頭。這篇博文(http://remysharp.com/2011/04/21/getting-cors-working/)詳細介紹了這個細節,但簡短的說法是,在一個奇怪的功能塊中,航班選項只有在您包含任何自定義標題的情況下才會檢查。如果你沒有添加任何頭文件到請求中,只是簡單的說明,那麼GET就會通過沒有OPTIONS檢查的情況。

我挖源,發現煎茶實際上確實有控制是否發送X-要求,沿與否,它只是不太正常使用曝光的配置。

Ext.Ajax.setUseDefaultXhrHeader(false); 

我只是設置,在請求出去之前,它會丟棄x-requested-with,並且只有GET出去。

+0

謝謝,好工作! – ilija139 2012-04-21 12:59:25

0

,因爲你是從不同的域訪問數據您需要的選項請求。這些選項稱它用於獲取Access-Control-Allow-Origin參數的值。如果沒有提出OPTIONS請求,跨域將不起作用。

+0

是否真的絕對neccesary,還是隻是作爲安全檢查的情況下,瀏覽器無法交付貨物的真實的東西?我問,因爲我使用jQuery製作了類似的應用程序(事實上使用相同的webservice),並且從那裏進行跨域的ajax調用時,它直接進入GET請求,並且從不執​​行OPTIONS檢查。 – 2012-04-19 21:18:38

相關問題