当我们部署了网站在服务器上后,访问网站显示异常,打开浏览器控制台后可以看到如下的错误:
Mixed Content: The page at ‘<URL>’ was loaded over HTTPS, but requested an insecure script ‘<URL>’. This request has been blocked; the content must be served over HTTPS.
翻译后如下:
混合内容:页面'<URL>’是通过HTTPS加载的,但请求了一个不安全的脚本'<URL>’。此请求已被阻止;内容必须通过HTTPS提供。
即使需要使用https进行访问,这是我们需要在nginx服务器里面配置如下:
1 | add_header Content-Security-Policy "upgrade-insecure-requests" always; |
upgrade-insecure-requests
:自动将网页上所有加载外部资源的 HTTP 链接换成 HTTPS 协议
其他的一些相关联的功能如下:
block-all-mixed-content
:HTTPS 网页不得加载 HTTP 资源(浏览器已经默认开启)upgrade-insecure-requests
:自动将网页上所有加载外部资源的 HTTP 链接换成 HTTPS 协议plugin-types
:限制可以使用的插件格式sandbox
:浏览器行为的限制,比如不能有弹出窗口等。
“网页安全政策”(Content Security Policy,缩写 CSP)