簡體   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