301重定向时未设置Referer Header的问题求助
以下是几种可能导致该问题的具体原因:
初始请求无Referer导致后续继承空值
你发起的初始请求https://mywebsite.com/redi/mywebsite.com/redi/google.com如果本身就没有携带Referer(比如直接在地址栏输入、通过书签打开,或是从无Referer的上下文触发),浏览器后续重定向的请求也不会生成Referer。Referer的生成依赖上一级请求的来源,初始请求无Referer时,后续请求自然也不会携带。浏览器实际生效的Referer策略不符预期
虽然MDN标注默认策略是strict-origin-when-cross-origin,但实际环境中可能存在例外:比如浏览器开启隐私模式、安装了屏蔽Referer的插件,或者页面中存在<meta name="referrer" content="no-referrer">这类元标签,都会覆盖默认策略,直接抑制Referer的发送。重定向目标的协议/格式触发安全限制
检查第二次请求的Location目标URL:如果目标是HTTP协议,而初始请求是HTTPS,strict-origin-when-cross-origin策略会自动省略Referer——因为从HTTPS降级到HTTP存在安全风险,浏览器会主动屏蔽该头。另外,URL包含特殊字符或格式错误时,也可能触发浏览器安全机制屏蔽Referer。CDN中间层的策略干扰
响应头显示使用了Cloudflare和Imperva CDN,部分CDN的安全或隐私配置(比如防爬规则、隐私保护策略)可能在处理重定向时修改或影响Referer的传递,甚至间接导致浏览器无法正确生成Referer。301重定向的缓存特性影响
301是永久重定向,浏览器会对这类响应进行缓存。如果之前该重定向请求曾因某种原因未携带Referer,浏览器可能复用缓存的重定向行为,导致后续请求不再携带Referer。可以临时改用302临时重定向测试,或清除浏览器缓存后重试。
内容的提问来源于stack exchange,提问作者niopiop poiu

