Asp classic 如何处理URL参数中的符号?
我有以下问题: 我使用的应用程序允许用户连接文本以构建URL,该URL通过GET方法将参数传递给ASP页面,例如:Asp classic 如何处理URL参数中的符号?,asp-classic,urlencode,Asp Classic,Urlencode,我有以下问题: 我使用的应用程序允许用户连接文本以构建URL,该URL通过GET方法将参数传递给ASP页面,例如: http://myhostname/process.asp?param1=value1¶m2=value2 问题是value1和value2可能包含未解释为文本字符的“与”符号 这个问题最流行的解决方案是对URL进行编码,这对我来说不是一个选项,因为我无法修改构建URL的程序。我可以修改process.asp页面,但不能修改连接文本字段和构建URL的程序 我尝试搜
http://myhostname/process.asp?param1=value1¶m2=value2
问题是value1和value2可能包含未解释为文本字符的“与”符号
这个问题最流行的解决方案是对URL进行编码,这对我来说不是一个选项,因为我无法修改构建URL的程序。我可以修改process.asp页面,但不能修改连接文本字段和构建URL的程序
我尝试搜索的内容包括:
- 如何在浏览器中直接使用javascript对URL进行编码
- 如何在读取文件时更改IIS默认行为&
- 传递参数的替代方法,例如,将参数作为单个字符串传递,并用管道分隔
http://myhostname/process.asp?param1=abc&def¶m2=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并自己解析它。