繁体   English   中英

ASP-Classic-如何清除Response.Redirect放置在其中的重定向标头?

[英]ASP-Classic - how can I clear out a redirect header put there by Response.Redirect?

我正在使用ASP页调用的已编译VB6对象。 响应缓冲已打开。 我的代码调用了另一个已编译的VB组件,该组件可能调用Response.Redirect(),但继续执行并将控制权返回给我的代码。 然后,我可能想自己打电话给Response.redirect。 但是,这似乎是为标头创建一个数组,而不是覆盖以前的Url:

码:

  Call m_oResponse.Redirect("http://google.com")
  Call m_oResponse.Redirect("http://yahoo.com")

产生的http响应:

 HTTP/1.1 302 Object moved
 ...
 Location: http://google.com,http://yahoo.com
 ...
 Date: Wed, 23 Mar 2011 18:14:17 GMT
 Connection: keep-alive

我尝试了Response.Clear,但这似乎并不影响标题。

据我所知, Response.Redirect()终止页面的处理并立即进行重定向。 通常,您的代码此后无法继续处理,因此您无法做任何避免重定向的操作。

MSDN说:

原始URL指示的页面中的任何响应正文内容(例如显示的HTML文本或Response.Write文本)都将被忽略。 但是,此方法会将由原始URL指示的此页面设置的其他HTTP标头发送到客户端。 生成包含重定向URL作为链接的自动响应正文。

http://msdn.microsoft.com/en-us/library/ms524309.aspx

我认为可以让代码在以后继续执行的唯一方法是调用已编译的COM组件或某些其他外部进程,因为这不会受到终止页面执行的影响。

如果您提到的VB组件是一个外部组件,而不仅仅是<!--#include file="other_script.asp"-->指令中包含的另一个ASP文件,则它将继续执行,但您调用的ASP页面不会执行。

您有已编译组件的源代码吗?

即可以将其重写为,而不是直接引起重定向,而只需返回URL即可重定向到?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM