跨域資源共享 (CORS) 配置

跨域資源共享 (CORS) 透過 Access-Control-Allow-Origin 和相關標頭進行處理。Access-Control-Allow-Origin 定義了允許向您域中的頁面發出請求的非同源(non-same origins)。(即,透過 XMLHttpRequestfetch())。

問題

預設情況下,同源策略會阻止指令碼發起的跨域 HTTP 請求。有幾種用例需要跨域指令碼訪問;例如,提供 JavaScript/CSS 庫託管的內容分發網路 (CDN) 和公共 API 端點。然而,跨域訪問存在重大的安全風險,必須小心控制。

解決方案

使用 Access-Control-Allow-Origin 來定義允許向您域中的頁面發出請求的非同源。

如果存在,Access-Control-Allow-Origin 應指定您的網站執行所需的最小數量的源和資源。例如,如果您的伺服器既提供網站又提供供遠端 XMLHttpRequest 訪問的 API,則只有 API 資源應返回 Access-Control-Allow-Origin 標頭。

未能正確設定 Access-Control-Allow-Origin 將允許未經授權的源讀取您網站上任何頁面的內容。如果這些網站能夠傳送憑證,這可能會使您的網站面臨 CSRF 攻擊,這是尤其危險的。

如果需要從特定源進行憑證訪問,請確保 Access-Control-Allow-Origin 僅設定為這些源,而不是反映 Origin 標頭。如果需要公共的非憑證訪問,請將 Access-Control-Allow-Origin 設定為 * 並省略 Access-Control-Allow-Credentials 標頭。否則,請省略這兩個標頭。

示例

允許任何站點讀取 JavaScript 庫的內容

http
Access-Control-Allow-Origin: *

注意: 子資源完整性需要此設定才能正常工作。

允許 https://random-dashboard.example.org 讀取 API 的返回結果

http
Access-Control-Allow-Origin: https://random-dashboard.example.org

另見