2014-09-04 51 views

回答

53

CORS以這樣的方式實現,它不會中斷在前CORS,同源僅世界。

在CORS之前的世界中,客戶端可能會觸發交叉源請求(例如,通過腳本標記),但它無法讀取響應頭。

爲了確保CORS不會破壞這個假設,CORS規範要求服務器爲客戶端提供明確的權限以便讀取這些頭(通過Access-Control-Expose-Headers頭)。這樣,未經授權的CORS請求就像他們在CORS之前的世界中一樣。

3

這是一個很好的問題。通過http://www.w3.org/TR/cors/#simple-response-header來看,這並不明顯,爲什麼你想要或需要這樣做。

CORS規範強調了這樣一個想法,即當客戶端請求一種連接類型並且服務器響應它將允許它時,您必須進行預請求握手 - 這可能只是另一方面。

默認情況下,內容長度不是允許的標題,所以我遇到了同樣的問題(稍後當我需要訪問WebDAV並且必須修改允許的參數)時,CORS確實沒有做很多(對我來說),所以如果它是反覆無常的,它並不會讓我感到驚訝。

+2

CORS感覺反覆無常正是因爲規範作者已經仔細思考這件事。 CORS必須啓用跨源請求,同時仍保護瀏覽器的同源策略。需要平衡這兩種(有時是相反的)力量,這使得CORS規範很難理解。 – monsur 2014-09-04 19:29:07

+0

建議的鏈接是本月獲得的最有幫助的指針。我知道Access-Control-Allow-Headers,但沒有考慮Access-Control-Expose-Headers,並且無法理解爲什麼我的「Links」頭文件沒有進入我的Backbone集合。驚人。 – mcdave 2015-11-25 02:50:10