资讯文章 资讯 · NEWS
CSP、HSTS、Referrer-Policy:这些安全响应头会不会挡住收录
2026-10-23 约 1,895 字 预计阅读 5 分钟 yiyunkj
C
结论先行:安全头不参与索引决策
谷歌决定要不要收录一个页面,看的是这条链:DNS 能不能解析、连接能不能建立、返回什么状态码、robots.txt 和 meta robots 怎么写的、canonical 指向哪里、内容质量如何。
CSP、HSTS、X-Frame-Options、X-Content-Type-Options、Referrer-Policy 全都不在这条链上。它们不在 robots meta 标签的文档里,也不在 Robots 排除协议里。少了它们不会掉收录,多了也不会加分。
那为什么还要关心?因为它们能间接地把页面弄坏,而且坏的方式很隐蔽——页面能打开,状态码是 200,但渲染结果是空的。

图片来源:网络,版权归原作者所有,侵权请联系删除
CSP 是最容易出事的那个
内容安全策略控制页面能加载哪些脚本、样式、图片、框架。写严了,把渲染内容必需的 JS 挡在外面,客户端渲染的目录页就会变成空白。搜索引擎拿到空 DOM,判断为无实质内容,收录自然没有。
这件事的麻烦之处在于:你在浏览器里看可能一切正常(因为你的浏览器有缓存、有扩展、或者你访问的是已缓存的版本),而爬虫那边是干净的。反过来也有可能。
稳妥的做法是先上报告模式:
Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report
这个头只记录违规不阻断,跑一周看报告里有哪些来源被拦,把该放行的加进白名单,再切到强制执行。目录站上常见的需要放行的来源有:CDN 的静态资源域名、统计脚本、字体服务、广告联盟、条目缩略图的图床。
更根本的解法是:让核心内容存在于服务端返回的 HTML 里,不依赖 JS 注入。这样即使 CSP 出了问题,至少条目列表和文字还在。
HSTS:别在没确认之前上 preload
HSTS 强制浏览器只走 HTTPS,顺带省掉首次访问那次 HTTP 到 HTTPS 的跳转。配置一般是:
Strict-Transport-Security: max-age=31536000; includeSubDomains
要小心的是 includeSubDomains。它会覆盖到所有子域,包括那些你忘了还没上 HTTPS 的。m.example.com、cdn.example.com、某个老旧后台,只要有一个不支持 HTTPS,加了这条之后用户就彻底打不开了。
preload 更要谨慎。加进浏览器预加载列表之后,撤销要等几个月甚至更久。目录站如果有子域经常变动,我建议先不上 preload,把 max-age 设成一年,includeSubDomains 在所有子域都通过验证之后再补。
Referrer-Policy 影响的是你的外链关系
这个头不直接影响收录,但对目录站有实际影响。目录站的核心资产是出站链接,被收录的网站管理员会看统计里有没有从你这里来的流量。如果设成 no-referrer,对方那边什么都看不到。
后果不是排名下降,是关系层面的:对方不知道你给他带了多少量,你在谈合作、换位置、要资料的时候少了一个筹码。
推荐用 strict-origin-when-cross-origin,这也是现在主流浏览器的默认值。站内跳转传完整来源,跨站只传域名,HTTPS 到 HTTP 不传。隐私和可用性两头都顾上了。
另外两个顺手配掉
- X-Content-Type-Options: nosniff:阻止浏览器猜测 MIME 类型,零成本,对爬虫解析没负面影响。
- X-Frame-Options: SAMEORIGIN:DENY 会挡掉所有 iframe 嵌入,包括一些合法场景。SAMEORIGIN 对目录站更合适。注意如果用 CSP 的 frame-ancestors,两者并存时以 CSP 为准,别配出互相矛盾的规则。
上线前必做的两步检查
- 看渲染结果:Search Console 的网址检查,点「测试实际网址」,再进「查看已抓取的页面」,对比它拿到的 HTML 和截图跟你浏览器里看到的是不是一回事。缺了内容,八成是 CSP 或某条脚本阻断规则。
- 看控制台:浏览器开发者工具的 Console 里会有 CSP 违规报告,一条条过一遍,确认没有该加载却没加载的资源。
还有一条要注意:爬虫对安全头的处理逻辑和 Chrome 不完全一样。有些爬虫不完全支持 CSP,有些会遵守 HSTS 但缓存时间有限。别假设「Chrome 正常所以爬虫也正常」——上一批我做 A/B 测试那篇里也提过类似的思路,Googlebot 的行为不能直接套用浏览器模型。
安全头该配,它保护的是你的站点不被挂马、不被劫持。只是配完记得回头确认一遍收录没掉——这两件事本来不冲突,冲突的从来都是配错了还不检查。