Response.Redirect strip Header Referrer - 可以添加回来吗?

Jee*_*eby 7 .net c# asp.net response.redirect http-headers

我正在使用Response.Redirect将用户重定向到另一台服务器以下载文件,另一台服务器正在检查标头以确保它来自正确的服务器...但是似乎Response.Redirect从响应中剥离了标头.

有谁知道如何添加标题?我试过了:

Response.AddHeader("Referer", "www.domain.com");
Run Code Online (Sandbox Code Playgroud)

但是,当我检查是否设置了Referrer标头时,接收页面会测试为false.

除了显示用户点击的按钮(我想尽可能地保持用户隐藏的URL)之外,我可以提出如何使其工作的任何建议.

mat*_*eca 9

有一个HTML黑客可用.

<form action="http://url.goes.here" id="test" method="GET"></form>
<script type="text/javascript">
  document.getElementById("test").submit();
</script>
Run Code Online (Sandbox Code Playgroud)

如果你需要从后面的代码触发,那也可以这样做:

Response.Write( @"<form action='http://url.goes.here' id='test' method='GET'></form>
                  <script type='text/javascript'>
                     document.getElementById('test').submit();
                  </script> ");
Run Code Online (Sandbox Code Playgroud)

正如Inkel可能指出的那样,这是对Referer [原文如此]规范的宽松解释.它会做你想要的.


tva*_*son 1

我认为这是不可能的。您发送回客户端的是一个 Location 标头,它告诉客户端加载引用的页面而不是最初请求的页面。在这种情况下,客户端不是来自链接,因此不会设置引用标头。基本上就好像用户在浏览器的地址栏中输入了重定向 URL。

您可以将引荐来源网址保存在会话中,或将其编码在 URL 中作为查询参数。就像使用 ReturnUrl 进行表单登录一样。