2012-09-28 40 views
4

當進行跨域Ajax POST請求時,AngularJS首先發送HTTP OPTIONS請求。 jQuery也是這樣,我知道這是規範的一部分。區別在於,如果OPTIONS請求出現錯誤(例如,服務器不支持它,通常情況下),jQuery將繼續併發出POST請求,無論如何,AngularJS只是默默地失敗並放棄。是否有辦法強制它發出POST請求?如何讓AngularJS忽略ajax OPTIONS方法?

+4

我認爲OPTIONS請求是在瀏覽器級別處理的。查看jQuery中的$ http角色和XHR的源代碼,我沒有看到任何對OPTIONS請求的引用,但是有一些特定的代碼涉及jQuery中的跨域請求的頭文件,這可能是造成差異的原因。參考:https://github.com/angular/angular.js/blob/master/src/ng/http.js和https://github.com/jquery/jquery/blob/master/src/ajax/xhr。 js。我對這個問題的解決方案是使反向代理注入正確的Allow-XXXX頭文件。 – Guillaume86

回答

3

正如Guillaume86所述OPTIONS請求(又名預檢CORS請求)由瀏覽器發送該請求是否是由交域。看到這裏的規格http://www.w3.org/TR/cors/。如果您設置緩存標頭,瀏覽器將緩存它。例如:

Access-Control-Max-Age: 1728000