14

我正在尝试设置标题并重定向到这样的不同页面 -

Response.Headers.Add("id", "testtest");
Response.Redirect("http://www.somesite.com/somepage.aspx");

page_loadsomepage.aspx 中,我正在检查对标头的请求 -

if (!string.IsNullOrEmpty(Request["id"]))
{
   // do something with "id"
}

Request["id"] 始终为空。如何获取新页面中标题的值?我不想使用查询字符串。

谢谢!

更新:

这里有更多细节——我有两个 ASP.NET v4 Web 应用程序(站点 1 和站点 2)在两台不同的机器上运行。站点 1 只有一个 aspx 表单,上面只有一个按钮。单击按钮时,我点击数据库并获取我需要的值并将其传递给站点 2。在站点 2 的 Global.asax 中,我将读取从站点 1 接收到的标题信息并使用该值。

更新#2:

我能够让它工作——

 Response.Write(
                    string.Format(
                        @"<form action='{0}' id='test' method='POST'><input type='hidden' name='key' value={1} /></form>
                  <script type='text/javascript'>
                     document.getElementById('test').submit();
                  </script> ",
                        "http://www.somesite.com", "1234"));

在目标站点中,我能够使用 -

Request["key"]
4

5 回答 5

15

HTTP 标头仅对当前响应有效。当您设置重定向时,当前响应包含您的自定义标头,但是当浏览器遵循重定向位置时,这些标头不再存在。此外,您正在Request["id"]其他页面中使用,因此您需要将值作为查询字符串发送:

Response.Redirect("http://www.somesite.com/somepage.aspx?id=test");
于 2010-11-01T15:43:54.190 回答
4

没有办法将标头添加到 http 请求,只能通过浏览器或其他程序的用户操作或您自己发送此类请求来启动。

因此,您可以简单地使用 .Net 框架中的这些 http 客户端之一,例如HttpClientorHttpWebRequest并使用您想要的任何标头发送自定义请求,而不是调用Response.Redirect.

然而,只能在IIS中将自定义标头添加到 http 响应消息。执行重定向时仍然无法控制后续请求标头。

<configuration>
   <system.webServer>
      <httpProtocol>
         <redirectHeaders>
            <add name="X-Custom-Redirect-Header" value="MyRedirectValue" />
         </redirectHeaders>
      </httpProtocol>
   </system.webServer>
</configuration>
于 2014-05-12T09:14:55.680 回答
1

Response.Headers.Add("id", "testtest"); 没有达到预期的效果,因为您从未向客户端发送过响应。如果您使用的是 Response.Redirect,那么您只是重定向到 url,并且 Request 对象不会与您之前的 Response 参数混合。

您可以使用某种形式的 AppContext/Session 机制在这两个页面之间传递参数。

于 2010-11-01T15:50:41.097 回答
0

你试过Server.Transfer("http://www.somesite.com/somepage.aspx");吗?这可能会为您提供所需的数据。如果没有,如果您不想使用 Session 变量,则必须将数据发布到原始页面上的表单。

于 2010-11-01T15:53:11.117 回答
0

不要通过标头传递 id,而是使用 Cookie。

Response.Cookies.Add(new HttpCookie("id", someId));
Response.Redirect("http://www.somesite.com/somepage.aspx");

您可以使用以下代码获取此 ID:

Request.Cookies["id"];
于 2021-09-13T10:34:32.323 回答