PHP如何判断一个请求是否来源于本域并且是ajax请求?

PHP如何判断一个请求是否来源于本域并且是ajax请求?

jquery中对于ajax是这样写的,xhr对象有setRequestHeader这个方法,设置头部:

if !options.crossDomain && !headers["X-Requested-With"] { headers["X-Requested-With"] = "XMLHttpRequest";
}
// Set headers
for i in headers { xhr.setRequestHeader i, headers[ i ] ;
}

所以如果在PHP端验证的话,是这样的:

public static function isAjax { return XMLHttpRequest == @$_SERVER[HTTP_X_REQUESTED_WITH];
}

if !isset$_SERVER[HTTP_X_REQUESTED_WITH] || $_SERVER[HTTP_X_REQUESTED_WITH] !== XMLHttpRequest { }

通过请求头的Referer属性可以获取来源,X-Requested-With属性(不代表ajax一定需要这个请求头属性)可以判断是否是ajax。但是请求头这种东西,你也知道的,很容易伪造。如果仅仅是做业务上的判断,请求头就够了,若果进行安全反爬等方面讲,这个就弱的一塌糊涂

发表评论

电子邮件地址不会被公开。 必填项已用*标注