日期:2014-05-17  浏览次数:20975 次

限制直接访问Ajax请求地址
限制直接访问Ajax请求地址:
有时候有些页面是用ajax请求,而达到无刷新的效果,那我要怎么去限制非法去测试这些请求地址的请求呢

就是:
有些人恶意的直接在浏览器输入地址去请求

------最佳解决方案--------------------

        public static bool AjaxRequest(HttpRequestBase Request)
        {
            string sheader = Request.Headers["X-Requested-With"];
            bool isAjaxRequest = (sheader != null && sheader == "XMLHttpRequest") ? true : false;
            if (isAjaxRequest)   //判断请求是否为ajax
                return true;
            else
                return false;
        }

------其他解决方案--------------------
判断来路
Request.UrlReferrer 不为空 且 包含你的网站域名
------其他解决方案--------------------
这个仅能限制非ajax请求. 如果是恶意的 ajax请求.这个还是达不到效果的. 但是限制地址栏访问时OK的

------其他解决方案--------------------
引用:
判断来路
Request.UrlReferrer 不为空 且 包含你的网站域名


直接在地址栏访问 。domain 不会变。 判断这有用吗?
------其他解决方案--------------------

直接在地址栏访问,来路就是空, 
ajax请求 判断来路页面在你的域名下。
domain怎么会变?
------其他解决方案--------------------


就像这样的。
------其他解决方案--------------------
其实这个以前也是俺做的,但是不知道怎么做的,忘了。
------其他解决方案--------------------
引用:
就像这样的。

我给你的代码可以实现哦。 

return false 的时候 提示就好
------其他解决方案--------------------

if(Request.UrlReferrer!=null && Request.UrlReferrer.Host==Request.Url.Host)

{
...
}

------其他解决方案--------------------


     public static bool AjaxRequest()
        {
            string sheader = Request.Headers["X-Requested-With"];
            bool isAjaxRequest = (sheader != null && sheader == "XMLHttpRequest") ? true : false;
            if (isAjaxRequest)   //判断请求是否为ajax
                return true;
            else
                return false;