欢迎各位兄弟 发布技术文章
这里的技术是共享的
<meta name="referrer" content="no-referrer"> 详解作用:
该标签用于控制浏览器在跳转或请求资源时发送的 Referer(HTTP 请求头) 的信息,可以影响 CORS(跨域资源共享)行为、隐私保护和某些 API 的限制。
html<meta name="referrer" content="策略值">
其中,content 可取的策略值如下:
| 策略值 | 含义 |
|---|---|
no-referrer | 完全不发送 Referer 头,适用于隐私保护或绕过某些 CORS 限制(但可能影响功能)。 |
no-referrer-when-downgrade(默认) | 在 HTTPS→HTTP 跳转时不发送 Referer(安全策略)。 |
origin | 仅发送当前页面的域名(不包含路径),例如:Referer: https://example.com。 |
origin-when-cross-origin | 同源时发送完整 URL,跨域时仅发送域名。 |
same-origin | 仅在同源时发送 Referer,跨域时不发送。 |
strict-origin | HTTPS→HTTPS 时发送域名,但 HTTPS→HTTP 时不发送(比 no-referrer-when-downgrade 更严格)。 |
strict-origin-when-cross-origin | 默认推荐策略,跨域时仅发送域名,且 HTTPS→HTTP 时不发送。 |
unsafe-url | 始终发送完整 URL(可能泄露敏感路径信息,不推荐)。 |
某些网站可能检查 Referer 头来阻止外部访问(如防盗链),设置 no-referrer 可能绕过此类限制:
html<meta name="referrer" content="no-referrer">
但仅限于简单请求(如图片、JS 资源),复杂的 AJAX 请求仍需服务端支持 Access-Control-Allow-Origin。
防止第三方网站通过 Referer 获取当前页面的 URL 路径(例如包含敏感信息的页面)。
某些 API(如 Cloudflare、AWS S3)可能依赖 Referer 进行权限控制,移除 Referer 可能导致功能异常。
并非万能:大多数 CORS 问题仍需后端配置 Access-Control-Allow-Origin。
安全性影响:no-referrer 可能使某些基于 Referer 的安全策略失效。
浏览器兼容性:主流浏览器均支持,但在老旧浏览器(如 IE11)可能不生效。
如果原页面是 http://shipingzhong.cn,访问 http://jsfaq.luxshare-ict.com/.../image.png,浏览器默认会发送:
Referer: http://shipingzhong.cn/page.html
某些服务器可能拒绝这类跨域请求。
添加 <meta name="referrer" content="no-referrer"> 后,Referer 头不再发送,可能绕过检查(但仍然需要目标服务器允许匿名访问)。
html<!-- 当前页面的 URL 不会出现在目标网站的 Referer 头 --> <meta name="referrer" content="no-referrer">
如果 no-referrer 不适用:
后端代理(推荐):通过自己的服务器中转请求(如 Nginx、Node.js)。
改用 HTTPS:很多现代 API 要求 HTTPS 才能正常工作。
CORS 服务端配置:让资源服务器返回 Access-Control-Allow-Origin: *。
<meta name="referrer" content="no-referrer"> 适合: ✅ 绕过简单的防盗链(CORS 限制)
✅ 保护隐私(防止 URL 泄露)
但真正解决 CORS 问题通常需要 后端支持 或 HTTPS 升级。