CSP: base-uri

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2016.

HTTP Content-Security-Policy(内容安全策略)中的 base-uri 指令限制了可以应用于一个文档的 <base> 元素的 URL。假如指令值为空,那么任何 URL 都是允许的。如果指令不存在,那么用户代理会使用 <base> 元素中的值。

CSP 版本 2
指令类型 文档指令
default-src 回落 无。没有设置则允许任何 URL。

语法

base-uri 安全策略可以设置一个或多个源:

Content-Security-Policy: base-uri <source>;
Content-Security-Policy: base-uri <source> <source>;

此指令与其他 CSP 指令一样,使用大部分与参数相同的源值:CSP 源值

然而,请注意,一些值对 base-uri 没有意义,例如关键字 'unsafe-inline''strict-dynamic'

示例

Meta tag 配置

html
<meta http-equiv="Content-Security-Policy" content="base-uri 'self'" />

Apache 配置

bash
<IfModule mod_headers.c>
Header set Content-Security-Policy "base-uri 'self';
</IfModule>

Nginx 配置

bash
add_header Content-Security-Policy "base-uri 'self';"

违规的案列

假如你的域名不是 example.com,那么将 <base> 元素的 href 属性值设置成 https://example.com 会违反 CSP 策略。

html
<meta http-equiv="Content-Security-Policy" content="base-uri 'self'" />
<base href="http://example.com/" />

<!-- Error: Refused to set the document's base URI to 'http://example.com/' because it violates the following Content Security Policy directive: "base-uri 'self'" -->

规范

Specification
Content Security Policy Level 3
# directive-base-uri

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
base-uri

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

参见