>백엔드 개발 >PHP 튜토리얼 >javascript - PHP如何判断一个请求是否来源于本域并且是ajax请求?

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

WBOY
WBOY원래의
2016-06-06 20:36:121165검색

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

回复内容:

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

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

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

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

<code>public static function isAjax() {
   return 'XMLHttpRequest' == @$_SERVER['HTTP_X_REQUESTED_WITH'];
}
</code>

<code>if ( !isset($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] !== 'XMLHttpRequest' ) {

}
</code>

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.