2

我有以下问题:

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

http://myhostname/process.asp?param1=value1&param2=value2

问题是 value1 和 value2 可以包含与符号,它不会被解释为文本字符。

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

我试图搜索的内容是:

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

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

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

希望你能给我一些指导。

4

2 回答 2

1

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

  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=abc&def&P=123生产

参数名称:Q
值:abc&def
参数名称:P
值:123

请注意,这不够稳健。我只是说明我的想法。我没有用 no 测试&

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

于 2013-03-25T04:42:34.253 回答
-1

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

http://myhostname/process.asp?param1=abc&def&param2=123

请注意,在 2 个等于之间有 2 个与号。最后一个将是您的参数分隔符,其余的是值的一部分。最后一个等号之后的任何&符号也是值的一部分。

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

于 2013-03-25T03:25:35.833 回答