recherche

Maison  >  Questions et réponses  >  le corps du texte

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

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

高洛峰高洛峰2836 Il y a quelques jours333

répondre à tous(3)je répondrai

  • PHP中文网

    PHP中文网2017-04-10 15:06:20

    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'];
    }
    

    répondre
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:06:20

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

    répondre
    0
  • 高洛峰

    高洛峰2017-04-10 15:06:20

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

    répondre
    0
  • Annulerrépondre