跨域资源共享 (CORS) 配置

跨域资源共享 (CORS) 是使用 Access-Control-Allow-Origin 和相关标头处理的。Access-Control-Allow-Origin 定义了允许对您域名上的页面(即通过 XMLHttpRequestfetch())发出请求的非同源来源。

问题

默认情况下,同源策略 会阻止脚本发起的跨域 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 库的内容

http
Access-Control-Allow-Origin: *

注意:此设置是 子资源完整性 正常工作所必需的。

允许 https://random-dashboard.example.org 读取 API 返回的结果

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

另请参阅