Apache-2.4
允許 CORS 中的所有標頭
我想將我的 Apache 2.4 配置為以 CORS 友好的方式提供一些靜態資源。我已經有以下設置:
Header always set Access-Control-Allow-Origin "*"
但是,對於最近的 Safari,這似乎還不夠:
**$$ Error $$**載入資源失敗:請求標頭欄位… 不允許
Access-Control-Allow-Headers
。以這種方式提到的欄位包括
Accept-Encoding
andDNT
,但我想在添加它們之後我可能還會看到Cache-Control
,Origin
andAccept-Language
,因為這些是Access-Control-Request-Headers
Safari 發送的標頭中提到的欄位。但是誰能告訴我 Safari 或其他瀏覽器現在或將來可能會為我自己或其他具有不同配置的使用者請求哪些其他標頭?由於我不太了解的原因,顯然*
不是標題的有效設置。Access-Control-Allow-Headers
那麼我如何配置伺服器只說“在任何地方使用這些資源,我不關心他們的 CORS”?
*``Access-Control-Allow-Headers
現在是至少對於非憑據請求的有效值;但由於這是對規範的一個相當新的補充,它可能還沒有到達瀏覽器。
我發現的一種解決方案是,您可以將所有請求的標頭回顯到瀏覽器,而不是顯式添加標頭。在 Stack Overflow 上建議了這種方法,但該文章沒有提供這樣做的靜態配置。
在閱讀了關於
Header
和表達式的文件後,我設法使用以下行實現了這一點:Header always set Access-Control-Allow-Headers "expr=%{req:Access-Control-Request-Headers}"
我不確定這可能帶來的安全隱患,因此請照常使用,風險自負。