2013-11-27 28 views
1

所以我試圖用JavaScript做一個跨域AJAX請求。有了正確的標題和選項請求,仍然得到「No Access-Control-Allow-Origin頭部存在於請求的資源」

我的OPTIONS請求正在執行而沒有任何問題,並且我將返回 Access-Control-Allow-Origin:*作爲響應標頭。然而,試圖使後續的POST請求時,我得到以下錯誤:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://phoenix-client.local' is therefore not allowed access.

我已經驗證多次,我的OPTIONS請求確實正在發送正確的響應,其中包括訪問控制,允許-Origin頭,但是瀏覽器似乎忽略它:(

任何想法

編輯 - 一對夫婦的事情,我已經注意到:

如果我嘗試更新的頭我的服務器爲s結束時,除我之外的其他人都會在發出請求時獲得新更新的標頭。就好像我的電腦正在緩存對OPTIONS請求的響應。

這隻發生在我的一個AJAX請求中。在請求失敗之前,我發出了多個請求,並且它們都工作正常(除了最後一個標題外)。

編輯!!!!

更新此帖(非常晚)。這最終不是一個CORS錯誤。我從Chrome獲得一個錯誤的「Access-Control-Allow-Origin」錯誤,但是當我直接運行AJAX請求時,我得到了真正的錯誤(通常應該是錯誤500,帶有某種PHP錯誤消息) 。仍然不確定這是爲什麼發生,但...

+4

'POST'請求​​還*發送'Access-Control-Allow-Origin'? –

+0

不,它不發送訪問控制允許來源。剛開始在單臺計算機(我的)上遇到這個問題。適用於其他開發人員,即使使用內部IP地址遠程訪問我的本地服務器 –

+0

您的POST也必須發送Access-Control-Allow-Origin,並推斷爲@ExplosionPills。 –

回答

2

如果其他人遇到這個問題,我會結合我上面的一些意見。

該規範概述了CORS請求上下文中網絡錯誤的非常具體的行爲。對於預檢請求,即使ACAO標頭正確,網絡錯誤或非2xx響應也會作爲CORS錯誤報告。對於底層請求,根據我對規範的理解,具體的錯誤應該是可見的。也就是說,Chrome似乎在使用非2xx的底層請求上顯示CORS錯誤。看起來這是Chrome中的一個報告錯誤:http://code.google.com/p/chromium/issues/detail?id=269192

+0

也進入這一點。總之,如果你突然得到這個錯誤,並且非常確定你的CORS工作正常,請檢查服務器響應中的500或其他問題。鉻是錯誤報告。 – skoczen

相關問題