Asp classic 如何显示AJAX HTTP请求接收的查询字符串

Asp classic 如何显示AJAX HTTP请求接收的查询字符串,asp-classic,xmlhttprequest,query-string,jscript,server-variables,Asp Classic,Xmlhttprequest,Query String,Jscript,Server Variables,我们有一个脚本a,它通过向脚本B发送一个HTTPRequest和一些GET参数来提取信息 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", "appl

我们有一个脚本a,它通过向脚本B发送一个HTTPRequest和一些GET参数来提取信息

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使用的不是我们在GET中传递的ID(它总是采用五位数的格式),而是像“.sp-app-5”这样的字符串,其中的数字到目前为止是5-9

String("["+Request("ID")+"]"); // [.sp-app-9]
我在处理请求时遇到问题。脚本B中使用的QueryString显示脚本A接收的QS。但是,请求(“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请求中接收的查询字符串?

如果我理解正确,您需要验证脚本A是否在请求中正确发送GET查询字符串。对于这种情况,我经常使用Telerek(在windows上)提供的名为“Fiddler”的免费工具。它将监视所有http调用并记录请求和响应,包括查询字符串。它非常容易安装,在执行此类项目时非常有用

如果脚本A正确发送ID,或者脚本B错误解释ID,这将帮助您缩小范围

希望这有帮助


你不能直接开火吗
http://domain.com/scriptB.asp?ID=12345
在浏览器中查看它返回的内容,这是否会告诉您脚本是否正在破坏传递的
ID
值?直接转到它会正常工作。在这种情况下,它也会正确返回QS。但很明显,这对追踪这个bug是没有好处的,因为我无法重现导致它的环境。我很有信心脚本B没有伪造QS,您也很有信心
ID
被传递到
scriptA.asp
WinHttpRequest
是正确的?是的。如果ID输入不正确,它正在运行的脚本将被严重破坏。要到达它所在的位置,该ID已在流的前面使用过。很抱歉,我无法使用生产代码,但我试图尽可能地将问题归结为一个问题。我仍在努力了解这句话——“我在处理请求时遇到了问题。脚本B中使用的QueryString显示了脚本A接收的QS。但是,请求(“ID”)返回的异常字符串如上所述。”您的意思是
scriptB.asp
中的
Response.Write Request.QueryString
将显示传递到
scriptA.asp
中的QueryString,而不是预期的
ID=12345
?我以前简要地使用过这个工具。不过,我必须检查一下,我们是否可以在我们的一台机器上安全运行。记录所有流量将是一个太大的负担。我通常在我的开发笔记本电脑上运行它,在那里我将进行“脚本a”调用。这样,您只需记录您的开发笔记本电脑通话。