ASP请求方法不显示隐藏换行符和制表符

时间:2012-02-28 21:24:04

标签: post asp-classic vbscript wireshark

我正在尝试解析包含“\ n”和“\ t”字符的POST请求,但只要我使用Request.Form来操作数据,这些字符就不再存在了。我使用Wireshark确认字符在POST中。

有人可以帮忙吗?

以下是一些可以重现问题的代码:

POST:

str = "accountRequest=<NewUser>" & vbLf & _
"Hello" & vbTab & "World" & vbLf & _
"</NewUser>"


Set objHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
objHTTP.open "POST", "service.asp", False 
objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHTTP.send str

response.Write(objHTTP.responseText)

Set objHTTP = Nothing

service.asp:

function w (str)
response.Write(str & "<br>")
end function

str = request.Form("accountRequest")

w(str)
w("Tabs: "& InStr(str,vbTab))
w("Lines: "& InStr(str,vbLf))

输出:

HelloWorld
Tabs: 0
Lines: 0

2 个答案:

答案 0 :(得分:1)

最后发现,如果经典ASP Request.Form方法采用“\ t”格式(与URL编码相对),则不会保留标签。但是,PHP的$_POST确实如此,ASP.NET请求方法也是如此。

答案 1 :(得分:0)

如果您要做的就是为通过查询字符串传递的数据提供分隔符,那么我会尝试使用比制表符和新行更具体的字符。

|历史上曾经被广泛用于这样的情况 我相信taht#是另一个通过查询字符串而没有太多问题的值。

我个人而言,不喜欢依赖于能够从字符串值中选择Tab和NewLine。在这里和那里通过时,在某些情况下太容易迷路。

发送前请执行此操作:

str = str.replace(VbTab,"#")
str = str.replace(VbLf,"|")

...然后在你的目标页面上反复一次,它应该可以正常工作。