Asp classic 如何处理URL参数中的符号?

Asp classic 如何处理URL参数中的符号?,asp-classic,urlencode,Asp Classic,Urlencode,我有以下问题: 我使用的应用程序允许用户连接文本以构建URL,该URL通过GET方法将参数传递给ASP页面,例如: http://myhostname/process.asp?param1=value1&param2=value2 问题是value1和value2可能包含未解释为文本字符的“与”符号 这个问题最流行的解决方案是对URL进行编码,这对我来说不是一个选项,因为我无法修改构建URL的程序。我可以修改process.asp页面,但不能修改连接文本字段和构建URL的程序 我尝试搜

我有以下问题:

我使用的应用程序允许用户连接文本以构建URL,该URL通过GET方法将参数传递给ASP页面,例如:

http://myhostname/process.asp?param1=value1&param2=value2
问题是value1和value2可能包含未解释为文本字符的“与”符号

这个问题最流行的解决方案是对URL进行编码,这对我来说不是一个选项,因为我无法修改构建URL的程序。我可以修改process.asp页面,但不能修改连接文本字段和构建URL的程序

我尝试搜索的内容包括:

  • 如何在浏览器中直接使用javascript对URL进行编码

  • 如何在读取文件时更改IIS默认行为&

  • 传递参数的替代方法,例如,将参数作为单个字符串传递,并用管道分隔

希望您能给我一些指导。

如果等号之间有2个(或更多)与,则只有最后一个是参数分隔符。因此,使用上面的URL,并假设value1=“abc&def”和value2=“123”,则URL将如下所示:

http://myhostname/process.asp?param1=abc&def&param2=123
注意,在2个相等值之间有2个符号。最后一个是您的参数分隔符,其余的是值的一部分。最后一个等于后的任何符号都是该值的一部分


您必须解析传入的URL并应用适当的逻辑

您可以读取整个查询字符串并自己解析,如下所示:

  q = Request.QueryString
  a = Split(q, "=")
  i = 1
  For Each s In a
    If i mod 2 = 0 Then
      If InStr(s, "&") <> InStrRev(s, "&") Then
        Response.Write "Value: " & Left(s, InStrRev(s, "&") - 1) & "<br/>"
        hidingParam = Right(s, Len(s) - InStrRev(s, "&"))
        Response.Write "PAramName: " & hidingParam & "<br/>"
        i = i + 1
      Else
        Response.Write "Value: " & s & "<br/>"
      End If
    Else
      Response.Write "PAramName: " & s & "<br/>"
    End If
    i = i + 1
  Next
q=Request.QueryString
a=拆分(q,“=”)
i=1
在一个
如果i mod 2=0,那么
如果仪表“和”仪表“和”,则
响应。写“值:&左,仪表板,&”)-1和“
” hidingParam=右侧(s、Len)-仪表板 响应。写入“PAramName:&hidingParam&”
i=i+1 其他的 响应。写入“值:&s&”
如果结束 其他的 响应。写入“PAramName:&s&”
如果结束 i=i+1 下一个

结果:

URL:
…?Q=abc&def&p=123

PAramName:Q
值:abc&def
PAramName:p
值:123

请注意,这不太可靠。我只是说明我的想法。我没有在没有
的情况下进行测试


它也不能处理多个“=”字符(如果可能的话)。

我无法确认您在我的开发机器上说的话
Request.QueryString(“param1”)
返回
abc
,而不是
abc&def
。不能执行Request.QueryString。你必须阅读整个URL并自己解析它。