重定向前在Express应用程序中设置自定义referer



我正在开发这个简单的应用程序,它要求我在重定向之前设置自定义的referer值。

假设A点击了我在Facebook上发布的X链接。现在,如果我在服务器中检查referer值,它会显示"facebook.com"。现在,点击链接X后,A会被重定向到B,B会显示referer"facebook.com."。但我希望它在B中显示"mywebsite.com",而不是"facebook.com"。我该如何实现这一点?

请注意,我在MDN中读到了关于"禁止标题名称"的内容,但有一个名为Hitlip的网站,它是一个流量交换网站。它们允许用户为他们发送的流量设置自定义的referer值。所以我想这是可能的。

这是我的路线:

router.get('/:id', (req, res) => {
res.set('Referer', 'https://mywebsite.com');
res.redirect('https://boomboom.com');
});

更新

我发现这在传统的设置标题的方法中是不可能的。所以,我一直在考虑通过以下两种方法来实现这个结果,但我不知道这是否有效。所以寻求反馈。

方法1:因此,当用户点击我的链接时,他会在重定向到最终目的地之前访问我服务器上的页面。我的服务器上的页面只会说";重定向";。当这种情况发生时,我还将为用户设置完整的头部,包括";"裁判";领域然后重定向到实际页面。

方法2:与方法1相同的方法,但这次我想从客户端复制完整的头,但当用户在我的";重定向";页面和重定向到最终目的地。

这些过程有可能吗?如果你有其他解决方案,请在这里分享。感谢

HTTP协议中的Referer标头从浏览器传递到服务器,而不是从另一个方向传递。如果你的服务器发送一个到浏览器,浏览器会忽略它

标准的商业浏览器很难篡改浏览器Javascript中Referer头的值。因为网络犯罪。您的计划可能会被一些网站视为试图进行跨站点请求伪造攻击。所以仔细思考你的目标。

你可以从你的网站提供一个页面,让你的用户浏览器立即重定向到所需的网站。像这样的页面可能对你有用。这意味着在0秒后从URL刷新当前页面https://example.com.

标题标签将浏览器选项卡标题设置为"标题";正在重定向"而刷新正在进行中。我发现这在单点登录重定向中很有用。它让用户知道即将发生的事情。

<html>
<head> 
<meta http-equiv="Refresh" content="0; URL=https://example.com/">
<title>Redirecting...</title>
</head>
</html>

如果没有设置正确的Referer(可能在所有浏览器中都没有(,您可以使用一点Javascript加载一个不可见的表单,然后立即提交。

这个小小的页面可能会为你做这件事:

<html>
<head>
<title>Redirecting...</title>
</head>
<body>
<form method="GET" action="https://example.com/">
</form> 
<script>
window.onload = function(){{
document.forms[0].submit()
}}
</script>
</body>
</html>

如果用户禁用浏览器Javascript,第二种方法将不起作用。但是,话说回来,在这种情况下,大多数网站都不起作用。

您可以使用浏览器的devtools网络选项卡来解决所有这些问题。它显示每个请求的标题。

最新更新