1

我有 default.asp,它通过 ajax 与 3 个不同的 *.asp 联系。我的问题是,如果人们试图以 url 的形式打开这些页面,是否有人试图在不访问 default.asp 的情况下执行这些 *.asp 页面。http://sample.com/ajax1.asp?get=foo是一个示例,如何防止这种访问我的 ajax 页面。

4

2 回答 2

1

您可以检测调用是否是 AJAX 请求来寻找HTTP_X-Requested-With标头,但即使您可以检测到 AJAX 调用,您也应该对所有请求进行身份验证,因为恶意用户可以轻松欺骗所有标头。

检测 AJAX 标头:

If Request.ServerVariables("HTTP_X-Requested-With") = "XMLHttpRequest" Then
   ''do stuff
Else
于 2012-05-22T22:12:35.167 回答
0

解决方案是将粗线添加到 ajax 请求中。

    function callit()
    {
     if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
     xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4&&xmlhttp.status==200){document.getElementById('alp').innerHTML=xmlhttp.responseText;}}
     xmlhttp.open("get", "call.asp", true);
     **xmlhttp.setRequestHeader("X-Requested-With","XMLHttpRequest");**
     xmlhttp.send();
    }
于 2012-05-23T23:06:43.360 回答