js实现referer
获取当前页面的 Referer
在 JavaScript 中可以通过 document.referrer 获取当前页面的 Referer 信息。这个属性返回加载当前页面的前一个页面的 URL。
const referrer = document.referrer;
console.log(referrer); // 输出前一个页面的 URL
设置 Referer 头信息
在浏览器端 JavaScript 中,无法直接修改 HTTP 请求的 Referer 头,这是出于安全考虑。但是可以通过以下方式间接控制:
使用 Fetch API 时,可以通过 referrerPolicy 选项控制 Referer 的发送行为:
fetch('https://example.com/api', {
method: 'GET',
referrerPolicy: 'no-referrer' // 不发送 Referer
});
可用的 referrerPolicy 选项包括:
no-referrer: 完全不发送 Refererno-referrer-when-downgrade: 默认值,HTTPS→HTTP 时不发送origin: 只发送源(协议+域名+端口)origin-when-cross-origin: 跨域时只发送源same-origin: 同源时发送完整 URLstrict-origin: 类似 origin 但有更多限制strict-origin-when-cross-origin: 类似 origin-when-cross-origin 但有更多限制unsafe-url: 总是发送完整 URL(不推荐)
通过 iframe 控制 Referer
在某些情况下,可以通过创建 iframe 并设置其 referrerpolicy 属性来控制 Referer:
<iframe src="https://example.com" referrerpolicy="no-referrer"></iframe>
或者通过 JavaScript 动态创建:
const iframe = document.createElement('iframe');
iframe.src = 'https://example.com';
iframe.referrerPolicy = 'no-referrer';
document.body.appendChild(iframe);
服务器端处理 Referer
如果需要更灵活地控制 Referer,通常需要在服务器端实现。例如,Node.js 中可以使用 http 或 https 模块设置请求头:
const https = require('https');
const options = {
hostname: 'example.com',
path: '/api',
method: 'GET',
headers: {
'Referer': 'https://yourdomain.com' // 自定义 Referer
}
};
const req = https.request(options, (res) => {
// 处理响应
});
req.end();
安全注意事项
修改 Referer 头可能违反某些网站的安全策略,应确保在使用这些技术时遵守相关法律法规和网站的使用条款。跨域请求中的 Referer 处理尤其需要注意安全限制。







