Asp.net 转发URL并在ASPX中仍然返回200而不是302

Asp.net 转发URL并在ASPX中仍然返回200而不是302,asp.net,http,url,http-headers,http-status-code-302,Asp.net,Http,Url,Http Headers,Http Status Code 302,我希望这个页面返回200,同时仍然发送重定向 <script> sub page_load 'Get the parameters dim content As String content = request.querystring("text") response.redirect ("http://100.200.100.10/test1/Default.aspx?CommandParm=" + co

我希望这个页面返回200,同时仍然发送重定向

<script>
    sub page_load
        'Get the parameters
         dim content As String
         content = request.querystring("text")
         response.redirect ("http://100.200.100.10/test1/Default.aspx?CommandParm=" + content)
    end sub
</script>
<html>
    <head>
    </head>
    <body>
        <form runat="server">
        </form>
    </body>
</html>

子页面加载
'获取参数
将内容设置为字符串
content=request.querystring(“文本”)
response.redirect(“http://100.200.100.10/test1/Default.aspx?CommandParm=“+内容)
端接头

无法使用
Response.Redirect()
。我想想看。可能在调用
Redirect()
后设置
Response.Status=“200 OK”
有效,我从未尝试过

您可以通过在一个空响应中手动设置“Location”标题来伪造它。不过,我不确定这有什么好处


(并且,作为记录:您将产生一个无效的HTTP头星座。不应该破坏任何东西,但仍然。)

使用
Response.Redirect()。我想想看。可能在调用
Redirect()
后设置
Response.Status=“200 OK”
有效,我从未尝试过

您可以通过在一个空响应中手动设置“Location”标题来伪造它。不过,我不确定这有什么好处


(并且,作为记录:您将生成一个无效的HTTP头星座。不应该破坏任何内容,但仍然是。)

您可以通过javascript重定向此页面

首先,通过生成以下字符串来创建动态javascript

<script type"text/javascript">
<!--
function redirect()
{
   window.location = "http://100.200.100.10/test1/Default.aspx?CommandParm=" + content
}
//-->
</script>
当您浏览当前页面时,它将返回HTTP 200,启动onload事件后,浏览器将调用redirect(),您的浏览将在目标页面中


只是好奇你为什么需要这个

您可以通过javascript重定向此页面

首先,通过生成以下字符串来创建动态javascript

<script type"text/javascript">
<!--
function redirect()
{
   window.location = "http://100.200.100.10/test1/Default.aspx?CommandParm=" + content
}
//-->
</script>
当您浏览当前页面时,它将返回HTTP 200,启动onload事件后,浏览器将调用redirect(),您的浏览将在目标页面中

只是好奇你为什么需要这个

无睑@

我同意这似乎是一个糟糕的可用性选择,但我希望这是一个无法直接解决的问题的解决办法

考虑到这一点,尝试一个,例如


并嵌入一条消息,解释登录此页面的不幸用户的情况


我可能在发帖时并没有解释我自己。这实际上是一个B2B交易。没有具有浏览器的最终用户。第三方发送HTTP GET。我们所要做的就是将其作为ligitimate事务转发


然后你应该发送一个301或302-这正是他们设计用来处理的目的。

@@

我同意这似乎是一个糟糕的可用性选择,但我希望这是一个无法直接解决的问题的解决办法

考虑到这一点,尝试一个,例如


并嵌入一条消息,解释登录此页面的不幸用户的情况


我可能在发帖时并没有解释我自己。这实际上是一个B2B交易。没有具有浏览器的最终用户。第三方发送HTTP GET。我们所要做的就是将其作为ligitimate事务转发


然后你应该发送一个301或302-这正是他们设计用来处理的目的。

你不能同时拥有它:重定向和状态200

关于:

10.2.1 200正常

请求已成功。随响应返回的信息取决于请求中使用的方法,例如:

  • GET:响应中发送与请求的资源对应的实体
  • :响应中发送与请求资源对应的实体头字段,不带任何消息体
  • POST:描述或包含行为结果的实体
  • 跟踪:包含终端服务器接收到的请求消息的实体
因此,除了发送一些由用户代理解释的内容(例如JavaScript)到浏览器之外,没有重定向的空间

在说明使用状态代码301、302或303重定向的规范中:

10.3.2 301永久移动

已为请求的资源分配了一个新的永久URI,将来对此资源的任何引用都应使用其中一个返回的URI。具有链接编辑功能的客户端应尽可能自动将对请求URI的引用重新链接到服务器返回的一个或多个新引用。除非另有说明,否则此响应是可缓存的

新的永久URI应该由响应中的Location字段提供。除非请求方法是HEAD,否则响应的实体应该包含一个简短的超文本注释,并带有指向新URI的超链接

如果收到301状态代码以响应GET或HEAD以外的请求,则除非用户能够确认,否则用户代理不得自动重定向请求,因为这可能会改变发出请求的条件

注意:当收到301状态代码后自动重定向POST请求时,一些现有HTTP/1.0用户代理会错误地将其更改为GET请求

10.3.3 302已找到

请求的资源临时驻留在不同的URI下。由于重定向有时可能会被更改,因此客户端应该继续使用请求URI来处理将来的请求。只有在缓存控件或Expires标头字段指示时,此响应才可缓存

临时URI应该由响应中的Location字段提供。除非请求方法是HEAD,否则响应的实体应该包含一个简短的超文本注释,并带有指向新URI的超链接

如果收到302状态代码以响应请求
mybody.Attributes.Add("onload", "redirect()");
<meta http-equiv="refresh" content="5;url=http://example.com/"/>