Content-Security-Policy: connect-src 指令

Baseline 已广泛支持

此功能已得到良好确立,并在许多设备和浏览器版本中都可使用。自 ⁨2016 年 11 月⁩以来,它已在所有浏览器中可用。

HTTP Content-Security-Policy (CSP) 的 connect-src 指令限制了可以使用脚本接口加载的 URL。以下 API 受此指令控制:

注意: connect-src 'self' 并非在所有浏览器中都能解析为 WebSocket 方案,更多信息请参阅此问题

CSP 版本 1
指令类型 获取指令
default-src 回退 是的。如果此指令缺失,用户代理将查找 default-src 指令。

语法

http
Content-Security-Policy: connect-src 'none';
Content-Security-Policy: connect-src <source-expression-list>;

此指令可以具有以下值之一

'none'

不允许加载此类型的任何资源。单引号是强制性的。

<source-expression-list>

一个由源表达式值组成的空格分隔列表。如果资源类型与任何给定的源表达式匹配,则可以加载此类资源。对于此指令,以下源表达式值适用:

示例

违规情况

给定此 CSP 头

http
Content-Security-Policy: connect-src https://example.com/

以下连接将被阻止且不会加载

html
<a ping="https://not-example.com">
  <script>
    const response = fetch("https://not-example.com/");

    const xhr = new XMLHttpRequest();
    xhr.open("GET", "https://not-example.com/");
    xhr.send();

    const ws = new WebSocket("wss://not-example.com/");

    const es = new EventSource("https://not-example.com/");

    navigator.sendBeacon("https://not-example.com/", {
      /* … */
    });
  </script></a
>

规范

规范
内容安全策略级别 3
# directive-connect-src

浏览器兼容性

另见