设置了X-XSS-Protection头后页面样式全乱了怎么办?
我在HTML里加了,但页面布局突然错乱了,特别是用了Tailwind的组件。查文档说这个头是防御XSS的,但按示例配置后连开发工具都看不出样式错哪儿了。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-XSS-Protection" content="1; mode=block">
<link href="https://tailwind.com/tailwind.css" rel="external nofollow" rel="stylesheet">
</head>
<body>
<div class="bg-red-500 p-4">测试内容</div>
</body>
</html>
控制台没报错,但红色背景变成了灰色,间距也不对了。其他安全头(Content-Security-Policy)正常工作,单独去掉这个X-XSS-Protection头样式就恢复了,这是配置冲突吗?
那个红色背景变成灰色应该不是样式错乱,是浏览器出于安全考虑把某些内联样式过滤掉了。Tailwind这种原子化CSS特别容易受这个影响,因为它的class名和样式映射关系比较特殊。
最直接的解决办法是去掉X-XSS-Protection头,改用更现代的安全方案。如果非要用的话,可以试试加个report参数:
不过我建议直接放弃这个头。现在主流方案都是用Content-Security-Policy,这个你都配好了。安全性和兼容性都更好,也更可控。前端这块安全方案一直在演进,老的头很容易踩坑。