
本文旨在解决在使用JavaScript的fetch API发起请求时,如何正确设置Referer请求头的问题。通过示例代码和详细解释,帮助开发者理解Referer的作用以及如何在fetch请求中正确配置,避免常见的“UrlReferrer was invalid”错误。
在使用JavaScript的fetch API发起网络请求时,有时需要设置Referer请求头,模拟用户从特定页面跳转到目标页面的行为。这在某些API接口中用于验证请求的来源,防止跨站请求伪造(CSRF)等安全问题。类似于PHP中的CURLOPT_REFERER,JavaScript的fetch API需要通过特定的方式来设置Referer。
正确的设置方法
与直接在fetch配置中使用referrer字段不同,设置Referer请求头应该通过headers选项来完成。这是因为referrer字段主要用于控制浏览器自身的Referer策略,而Referer header 才是真正发送给服务器的请求头。
立即学习“Java免费学习笔记(深入)”;
以下是正确的示例代码:
家电公司网站源码是一个以米拓为核心进行开发的家电商城网站模板,程序采用metinfo5.3.9 UTF8进行编码,软件包含完整栏目与数据。安装方法:解压上传到空间,访问域名进行安装,安装好后,到后台-安全与效率-数据备份还原,恢复好数据后到设置-基本信息和外观-电脑把网站名称什么的改为自己的即可。默认后台账号:admin 密码:132456注意:如本地测试中127.0.0.1无法正常使用,请换成l
const cookie = "cookie";
const csrf = "assuming we have csrf ticket already";
fetch("https://auth.roblox.com/v1/authentication-ticket", {
method: "POST",
headers: {
Cookie: ".ROBLOSECURITY=" + cookie,
"x-csrf-token": csrf,
"Referer": "https://www.roblox.com/home"
}
})
.then(response => response.text())
.then(ticket => {
console.log(ticket);
})
.catch(error => {
console.error("Error:", error);
});在这个示例中,Referer请求头被添加到headers对象中,其值为https://www.roblox.com/home。这样,服务器就能正确接收到Referer信息,并进行相应的验证。
注意事项
- 大小写敏感: Referer是一个标准的HTTP请求头,需要注意大小写,建议使用首字母大写的形式。
- 安全性: 在设置Referer时,需要确保其值的安全性,避免泄露敏感信息。通常情况下,设置为发起请求的页面的URL即可。
- CORS: 跨域请求(CORS)可能会影响Referer的发送。服务器需要正确配置CORS策略,允许来自特定域的请求携带Referer信息。
- 权限策略: 浏览器可能会基于权限策略限制对Referer的修改。如果遇到问题,请检查浏览器的安全设置和网站的权限策略。
总结
在JavaScript的fetch API中,通过headers选项设置Referer请求头是正确的方法。遵循上述注意事项,可以避免常见的错误,确保请求能够正确地携带Referer信息,从而满足服务器的验证需求。请记住,referrer 字段不等同于 Referer 请求头,它们的作用范围和使用场景有所不同。









