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

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

WBOY
WBOYOriginal
2016-06-06 20:36:121165Durchsuche

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。但是请求头这种东西,你也知道的,很容易伪造。如果仅仅是做业务上的判断,请求头就够了,若果进行安全反爬等方面讲,这个就弱的一塌糊涂

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn