跨域資源共享 (CORS) 配置
跨域資源共享 (CORS) 透過 Access-Control-Allow-Origin 和相關標頭進行處理。Access-Control-Allow-Origin 定義了允許向您域中的頁面發出請求的非同源(non-same origins)。(即,透過 XMLHttpRequest 或 fetch())。
問題
預設情況下,同源策略會阻止指令碼發起的跨域 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 庫的內容
Access-Control-Allow-Origin: *
注意: 子資源完整性需要此設定才能正常工作。
允許 https://random-dashboard.example.org 讀取 API 的返回結果
Access-Control-Allow-Origin: https://random-dashboard.example.org