我一直在尋找爲什麼添加這個特定的安全原因。當我實施cors並且可以看到所有標題被返回但我無法通過javascript訪問它們時,這是一種WTH時刻。爲什麼需要Access-Control-Expose-Headers?
40
A
回答
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確實沒有做很多(對我來說),所以如果它是反覆無常的,它並不會讓我感到驚訝。
相關問題
- 1. 爲什麼需要
- 2. 爲什麼需要typedef GLXContext?
- 3. 爲什麼Apache需要SSLCertificateKeyFile?
- 4. 爲什麼android需要jvm
- 5. 爲什麼BizTalk需要MSDTC?
- 6. 爲什麼需要StaticResource?
- 7. 爲什麼wcf duplex需要?
- 8. 爲什麼需要EndExecuteNonQuery()?
- 9. Bootstrap爲什麼需要jQuery?
- 10. 爲什麼PhotoCamera需要VideoBrush?
- 11. 爲什麼Grails需要Xerces?
- 12. 爲什麼需要std :: minmax_element?
- 13. 爲什麼需要session_ destroy()?
- 14. 爲什麼HttpClient需要httpasyncclient?
- 15. 爲什麼需要copy_to/from_user?
- 16. 爲什麼需要ReaderLock?
- 17. 爲什麼我需要MEX?
- 18. 爲什麼需要load_ptr_acquire?
- 19. 爲什麼active_support需要sinatra
- 20. 爲什麼lsyncd需要xnu?
- 21. 爲什麼需要Control.Invoke?
- 22. 爲什麼需要ControllerClassNameHandlerMapping
- 23. 爲什麼需要FLAGS?
- 24. 爲什麼需要gwt-bootstrap?
- 25. 爲什麼需要OleDbDataAdapter?
- 26. 什麼需要爲以下
- 27. 爲什麼需要NotificationCompat?
- 28. 爲什麼mybatis需要@Param?
- 29. 爲什麼需要浮標?
- 30. 爲什麼需要DevKit
CORS感覺反覆無常正是因爲規範作者已經仔細思考這件事。 CORS必須啓用跨源請求,同時仍保護瀏覽器的同源策略。需要平衡這兩種(有時是相反的)力量,這使得CORS規範很難理解。 – monsur 2014-09-04 19:29:07
建議的鏈接是本月獲得的最有幫助的指針。我知道Access-Control-Allow-Headers,但沒有考慮Access-Control-Expose-Headers,並且無法理解爲什麼我的「Links」頭文件沒有進入我的Backbone集合。驚人。 – mcdave 2015-11-25 02:50:10