在使用 Edge
浏览器打开网页时,按 F12
打开控制台,在下面的 问题
页卡内可以看到当前网站上的一些存在的问题,可以针对性做一些优化。
排除一些第三方服务引起的问题,我在自己的网站上看到两个需优化的问题,如下:
设置 x-content-type-options
响应头
在安全类的问题里出现较多这个提示:Response should include 'x-content-type-options' header.
。关于这个请求头,参考 kimi
的说明:
X-Content-Type-Options 是一个通用的 HTTP 响应头,可以被任何支持 HTTP 的服务器用来增强网站的安全性。
当服务器向客户端(通常是浏览器)发送响应时,如果响应中包含了 X-Content-Type-Options 头部,并且其值为 “nosniff”,那么浏览器将不会尝试去嗅探响应内容的 MIME 类型,而是会严格遵循响应头中指定的 Content-Type。这样做可以防止一些安全问题,比如:
跨站脚本攻击(XSS):如果攻击者能够上传或注入恶意脚本到网站,并且这些脚本的 MIME 类型被浏览器错误地识别为无害的类型(如图片或音频),浏览器可能会执行这些脚本。通过设置 “nosniff”,可以减少这种风险。
文件类型混淆:有时,攻击者可能会尝试通过改变文件扩展名来混淆文件的实际类型。如果浏览器尝试嗅探文件的实际内容,可能会被误导。”nosniff” 指令告诉浏览器不要这样做。
不安全的文件下载:如果用户下载了一个看似安全的文件,但实际上是恶意的,浏览器可能会因为 MIME 类型嗅探而错误地打开它,而不是提示用户保存。”nosniff” 可以防止这种情况发生。
对于这个问题,我们只需要在网站对应的 nginx
配置中加入以下配置,然后重载 nginx
配置就行:
server {
...
add_header X-Content-Type-Options nosniff;
...
}
设置 Cache-Control
响应头
在 Edge
的问题提示中,还可以看到有关 Cache-Control
的提示,主要有两个:
A 'cache-control' header is missing or empty.
The 'Expires' header should not be used, 'Cache-Control' should be preferred.
Cache-Control
头部是 HTTP/1.1
协议的一部分,用于指定响应的缓存指令。这些指令告诉浏览器和其他中间缓存如何存储和使用响应数据。未正确设置 Cache-Control
,可能会导致缓存行为不符合预期。
并且,推荐使用新的 Cache-Control
响应头替代属于 HTTP/1.0
时代的 Expires
响应头,这个缓存控制的响应头对于一些静态资源类的请求很有用,解决这两个提示,在 nginx
配置中删除 Expires
相关配置然后加上以下代码即可:
add_header Cache-Control "public, max-age=3600";
其中 max-age
标识缓存时间一个小时,根据需要调整,同样重载 nginx
配置生效。