1 HSTS
1.1 作用
HSTS(HTTP Strict Transport Secrity),服务器用此头部告知浏览器此网站只能使用 HTTPS 协议来访,浏览器应该自动把所有尝试使用 HTTP 的请求自动替换为 HTTPS 请求。
Chrome、Firefox等浏览器会产生一个307 Internal Redirect(内部跳转),自动跳转到HTTPS 请求。

1.2 语法
1 | Strict-Transport-Security: max-age=<expire-time> |
max-age=<expire-time>
设置在浏览器收到这个请求后的
includeSubDomains
可选
如果这个可选的参数被指定,那么说明此规则也适用于该网站的所有子域名。
preload
可选
查看 预加载 HSTS 获得详情。不是标准的一部分
1.3 注意
当网站没有证书错误时,浏览器才认为网站支持 HTTPS,然后才会使用 Strict-Transport-Security
的值,否则不会将 HTTP 自动转为 HTTPS。
2 CSP
2.1 作用
CSP(Content-Security-Policy 内容安全策略),服务器用此头部来配置资源的可信来源白名单,从而减少和报告 XSS 攻击。当不包含 CSP 头部时,浏览器将使用同源策略。
2.2 语法
1 | Content-Security-Policy: <policy-directive>; <policy-directive> |
policy 参数由一系列描述策略指令的字符串组成。每个策略指令都描述了某个特定类型资源的生效范围。策略应该包含一个 default-src 策略指令,作为资源类型的默认策略。
除此之外, 元素也可以被用来配置该策略, 例如:
1 | <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';"> |
2.3 示例
配置网站所有内容均来自自身(不包括子域名)
1 | Content-Security-Policy: default-src 'self' |
配置网站所有内容来自自身 或者 trusted.com及其子域
1 | Content-Security-Policy: default-src 'self' *.trusted.com |
配置网站内容中支持来自任何源的图片, 但是限制音频或视频需从信任的资源提供者(获得),所有脚本必须从特定主机服务器获取可信的代码
1 | Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com |
3 X-Content-Type-Options
3.1 作用
此头部可以用来限制客户端(如浏览器)按照 content-type 配置的 mime 类型对返回数据进行解析。禁止客户端的 MIME 类型嗅探(在缺失 MIME 类型或客户端认为文件设置了错误的 MIME 类型时,浏览器可能会通过查看资源来进行MIME嗅探,不同浏览器可能会执行不同的操作)。
3.2 语法
1 | X-Content-Type-Options: nosniff |
nosniff
下面两种情况的请求将被阻止:
- 请求类型是”
style
“ 但是 MIME 类型不是 “text/css
“, - 请求类型是”
script
“ 但是 MIME 类型不是 JavaScript MIME 类型。
- 请求类型是”
4 X-Frame-Options
4.1 作用
此头部用来限制客户端(如浏览器)是否可以在 frame iframe embed 或 object 中展示网页。
4.2 语法
支持下面三种值
1 | X-Frame-Options: deny |
deny
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
sameorigin
表示该页面可以在相同域名页面的 frame 中展示。
allow-from *uri*
表示该页面可以在指定来源的 frame 中展示。
4.3 注意
设置 meta 标签是无效的!例如 <meta http-equiv="X-Frame-Options" content="deny">
没有任何效果。不要这样用!只有当像下面示例那样设置 HTTP 头 X-Frame-Options
才会生效。
5 X-Xss-Protection
5.1 作用
此响应头是 Internet Explorer,Chrome 和 Safari 的一个特性,当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面。可以为尚不支持 CSP 的旧版浏览器的用户提供保护。
5.2 语法
1 | X-XSS-Protection: 0 |
0
禁止XSS过滤。
1
启用XSS过滤(通常浏览器是默认的)。 如果检测到跨站脚本攻击,浏览器将清除页面(删除不安全的部分)。
1;mode=block
启用XSS过滤。 如果检测到攻击,浏览器将不会清除页面,而是阻止页面加载。
1; report=
启用XSS过滤。 如果检测到跨站脚本攻击,浏览器将清除页面并使用CSP report-uri
指令的功能发送违规报告。