重定向前在 Express 应用程序中设置自定义引荐来源网址
Setting custom referer in Express app before redirecting
我正在开发这个简单的应用程序,它要求我在重定向之前设置自定义引用值。
假设 A 点击了我在 Facebook 上发布的 link X。现在,如果我检查服务器中的 referer 值,则会显示 'facebook.com'。现在 A 在点击 link X 后被重定向到 B,B 显示 referer 'facebook.com'。但我希望它在 B 中显示 'mywebsite.com' 而不是 'facebook.com'。我怎样才能做到这一点?
请注意,我在 MDN 中阅读了有关 'Forbidden Header Names' 的内容,但有一个名为 Hitleap 的网站,它是一个流量交换网站。他们让用户为他们发送的流量设置自定义引用值。所以我想这是可能的。
这是我的路线:
router.get('/:id', (req, res) => {
res.set('Referer', 'https://mywebsite.com');
res.redirect('https://boomboom.com');
});
更新
我发现用传统方法设置 header 是不可能的。所以,我一直在考虑通过使用以下两种方法来实现这个结果,但我不知道这是否可行。所以寻求反馈。
方法一:
因此,当用户点击我的 link 时,他将在重定向到最终目的地之前访问我服务器上的一个页面。我服务器上的页面只会说“重定向”。当发生这种情况时,我还将为用户设置完整的 header,包括“Referer”字段。然后重定向到实际页面。
方法二:
与方法 1 相同的方法,但这次我想从客户端复制完整的 header,但当用户在我的“重定向”页面中并重定向到最终目的地时更改引用值。
这些过程中的任何一个都是可能的吗?如果您有任何其他解决方案,请在此处分享。谢谢
Referer
headers in the HTTP protocol 从浏览器到服务器,而不是其他方向。如果您的服务器向浏览器发送一个,浏览器将忽略它。
标准的商业浏览器很难从浏览器 Javascript 中弄乱 Referer
header 的值。因为 cybercreeps。您的计划可能会被某些网站视为 cross-site request forgery attack 的尝试。所以仔细考虑你的目标。
您可以从您的网站提供一个页面,使您的用户的浏览器立即重定向到所需的网站。像这样的页面可能会为您解决问题。这意味着从 URL https://example.com.
0 秒后刷新当前页面
在刷新过程中,title 标签将 browser-tab 标题设置为“正在重定向...”。我发现这在 single-signon 重定向中很有用。它让用户知道即将发生的事情。
<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,则第二种方法将不起作用。但是,话又说回来,大多数网站在那种情况下都无法正常工作。
您可以使用浏览器开发工具的“网络”选项卡解决所有这些问题。每个请求显示 headers。
我正在开发这个简单的应用程序,它要求我在重定向之前设置自定义引用值。
假设 A 点击了我在 Facebook 上发布的 link X。现在,如果我检查服务器中的 referer 值,则会显示 'facebook.com'。现在 A 在点击 link X 后被重定向到 B,B 显示 referer 'facebook.com'。但我希望它在 B 中显示 'mywebsite.com' 而不是 'facebook.com'。我怎样才能做到这一点?
请注意,我在 MDN 中阅读了有关 'Forbidden Header Names' 的内容,但有一个名为 Hitleap 的网站,它是一个流量交换网站。他们让用户为他们发送的流量设置自定义引用值。所以我想这是可能的。
这是我的路线:
router.get('/:id', (req, res) => {
res.set('Referer', 'https://mywebsite.com');
res.redirect('https://boomboom.com');
});
更新
我发现用传统方法设置 header 是不可能的。所以,我一直在考虑通过使用以下两种方法来实现这个结果,但我不知道这是否可行。所以寻求反馈。
方法一: 因此,当用户点击我的 link 时,他将在重定向到最终目的地之前访问我服务器上的一个页面。我服务器上的页面只会说“重定向”。当发生这种情况时,我还将为用户设置完整的 header,包括“Referer”字段。然后重定向到实际页面。
方法二: 与方法 1 相同的方法,但这次我想从客户端复制完整的 header,但当用户在我的“重定向”页面中并重定向到最终目的地时更改引用值。
这些过程中的任何一个都是可能的吗?如果您有任何其他解决方案,请在此处分享。谢谢
Referer
headers in the HTTP protocol 从浏览器到服务器,而不是其他方向。如果您的服务器向浏览器发送一个,浏览器将忽略它。
标准的商业浏览器很难从浏览器 Javascript 中弄乱 Referer
header 的值。因为 cybercreeps。您的计划可能会被某些网站视为 cross-site request forgery attack 的尝试。所以仔细考虑你的目标。
您可以从您的网站提供一个页面,使您的用户的浏览器立即重定向到所需的网站。像这样的页面可能会为您解决问题。这意味着从 URL https://example.com.
0 秒后刷新当前页面在刷新过程中,title 标签将 browser-tab 标题设置为“正在重定向...”。我发现这在 single-signon 重定向中很有用。它让用户知道即将发生的事情。
<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,则第二种方法将不起作用。但是,话又说回来,大多数网站在那种情况下都无法正常工作。
您可以使用浏览器开发工具的“网络”选项卡解决所有这些问题。每个请求显示 headers。