2014-03-03 66 views
2

我們如何執行角js的跨站點ajax請求?我曾嘗試這樣做:無法發送ajax請求到其他域 - 角js

$http.post('http://cross.local', data) 

但瀏覽器拋出一個錯誤:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin is therefore not allowed access.

,所以我說的頭

Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:GET,POST,DELETE,OPTIONS
Access-Control-Allow-Origin:*

但我仍然得到同樣的錯誤。
我哪裏錯了?

+0

您將需要根據可靠的代理以及響應標頭顯示請求標頭。 –

+0

當你說你添加了標題,你的意思是請求或迴應? –

回答

0

您需要啓用角的CORS支持,這是默認關閉的

yourApp.config(['$httpProvider', function($httpProvider) { 
     $httpProvider.defaults.useXDomain = true; 
     delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    } 
]); 

第一行啓用CORS支持,第二去除頭,通常是用Ajax請求發送。

如果您不希望應用程序中的任何地方出現此行爲,則需要微調設置默認設置的位置。

+0

非常感謝,這適用於「獲取」請求,但不適用於發佈請求 – Arjun

+0

也許您在第一次POST請求之前執行GET請求,以確保瀏覽器緩存了正確的標頭。 – TheHippo

+0

對不起,我不明白你說的。 – Arjun

0

在服務器中,我忘記爲POST請求添加處理程序,因此對於每個請求的請求'No'Access-Control-Allow-Origin'標題存在於請求的資源中。因此,不允許訪問。「錯誤是由服務器引發的。當我添加POST處理程序時,它工作