【发布时间】:2015-03-27 14:38:24
【问题描述】:
我们有一个脚本 A,它通过向脚本 B 发送带有一些 GET 参数的 HTTPRequest 来获取信息。
var URL = "http://domain.com/scriptB?ID="+ID;
var XMLGateway = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
XMLGateway.open("GET", URL, false);
XMLGateway.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
此脚本 B 然后使用传递给它的查询字符串中的 ID 来返回一些信息。但是,这会引发不一致的错误。
一些调查显示,我们在 GET 中传递的不是 ID(它始终采用五位数字的格式),而是使用像“.sp-app-5”这样的字符串,其中数字为 5到目前为止 -9。
String("["+Request("ID")+"]"); // [.sp-app-9]
我在处理这个错误时遇到了麻烦,因为脚本 B 中使用的 Request.QueryString 显示了脚本 A 接收到的 QS。但是,Request("ID") 正在返回异常字符串。
Server.HTMLEncode(Request.ServerVariables("HTTP_HOST")); // domain.com
Server.HTMLEncode(Request.ServerVariables("QUERY_STRING")); // scriptA?some=values&foo=bar (same result as Request.QueryString)
如何显示脚本 B 在 HTTP 请求中接收到的查询字符串?
【问题讨论】:
-
您不能在浏览器中触发
http://domain.com/scriptB.asp?ID=12345并查看它返回的内容吗,这不会告诉您脚本是否搞砸了正在传递的ID值吗? -
直接访问它可以按预期工作。在这种情况下,它也会正确返回 QS。但显然这对追踪这个错误没有好处,因为我无法重现导致它的环境。我很有信心在脚本 B 上捏造 QS 并没有什么问题
-
并且您确信将
ID传递给scriptA.asp到WinHttpRequest是正确的? -
是的。如果 ID 输入不正确,它所运行的脚本会更加糟糕。为了达到这一点,在流程的前面已经使用了 ID。抱歉,我无法使用生产代码,但我试图尽可能地简化问题。
-
仍然试图理解这个语句 - “我在处理这个错误时遇到了麻烦,因为脚本 B 中使用的 Request.QueryString 正在显示脚本 A 接收到的 QS。但是, Request("ID") 正在返回异常字符串,如上。" 您的意思是
scriptB.asp中的Response.Write Request.QueryString将显示传递给scriptA.asp的查询字符串,而不是预期的ID=12345?
标签: asp-classic xmlhttprequest query-string jscript server-variables