【发布时间】:2015-10-19 00:20:38
【问题描述】:
我有一个很小的(经典)ASP 文件用于重定向。我想将用户发送到一个可能包含一些字符的 URL(我从传入的 URL 中获取它,因为它将所有路径从 domainA 重定向到 domainB,但我在这里对其进行了硬编码以简化事情)。
以下是重定向脚本的示例 URL:
https://old.example.org/my%20test/?name=Danny%20Tuppeny
URL 包含两个空格,我确信它们都被正确编码。如果您将带有文字空格的 URL 粘贴到浏览器中,浏览器会将两者都转换为 %20。
我将此网址传递给Response.Redirect(为简单起见,此处硬编码):
<%
Response.Redirect "https://new.example.org/my%20test/?name=Danny%20Tuppeny"
%>
但是,正在输出的位置标头有 一个 %20 再次编码,看起来像这样:
Location: https://new.example.org/my%2520test/?name=Danny%20Tuppeny
这是出乎意料的!这是asked before,但所有答案(包括例外答案)似乎都不正确。我认为我不应该随机解码有效 URL 的某些部分来抵消 ASP 的意外/不受欢迎的行为。
docs 没有提及这种行为(他们甚至说“始终验证和编码传递给 Response.Redirect 的 URL”),更糟糕的是,有关于如何应用 HTML 的示例em> 编码为传递给Response.Redirect 的值,这似乎更不正确。
注意: ASP.NET没有有这种愚蠢的行为。
有没有办法将格式正确的 URL 传递给 Response.Redirect 并让它执行预期的操作?
【问题讨论】:
标签: redirect iis asp-classic urlencode