跨域资源共享 (CORS) 配置
跨域资源共享 (CORS) 是使用 Access-Control-Allow-Origin
和相关标头处理的。Access-Control-Allow-Origin
定义了允许对您域名上的页面(即通过 XMLHttpRequest
或 fetch()
)发出请求的非同源来源。
问题
默认情况下,同源策略 会阻止脚本发起的跨域 HTTP 请求。有些用例需要跨域脚本访问;例如,内容分发网络 (CDN) 提供 JavaScript/CSS 库和公共 API 端点的托管。但是,跨域访问存在重大安全风险,必须仔细控制。
解决方案
使用 Access-Control-Allow-Origin
定义允许对您域名上的页面发出请求的非同源来源。
如果存在,Access-Control-Allow-Origin
应指定站点正常运行所需的最小可能来源和资源数。例如,如果您的服务器提供网站和 API,且 API 用于远程 XMLHttpRequest
访问,则只有 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