代码之家  ›  专栏  ›  技术社区  ›  lambshaanxy

从传入的PHP请求获取自定义授权头

  •  30
  • lambshaanxy  · 技术社区  · 15 年前

    因此,我尝试用PHP解析一个传入请求,该请求设置了以下标头:

    Authorization: Custom Username
    

    一个简单的问题:我到底是怎么弄到手的?如果是的话 Authorization: Basic ,我可以从 $_SERVER["PHP_AUTH_USER"] X-Custom-Authorization: Username ,我可以从 $_SERVER["HTTP_X_CUSTOM_AUTHORIZATION"] . 但这两项都不是由自定义授权设置的, var_dump($_SERVER) AUTH_TYPE PHP5函数 get_headers() 只处理对传出请求的响应。我在Apache上运行php5,安装了一个现成的Ubuntu。

    5 回复  |  直到 15 年前
        1
  •  49
  •   Tim Cooper    12 年前

    如果您只打算使用Apache,您可能想看看 apache_request_headers()

        2
  •  55
  •   deepwinter    12 年前

    对于基于令牌的身份验证:

      $token = null;
      $headers = apache_request_headers();
      if(isset($headers['Authorization'])){
        $matches = array();
        preg_match('/Token token="(.*)"/', $headers['Authorization'], $matches);
        if(isset($matches[1])){
          $token = $matches[1];
        }
      } 
    
        3
  •  34
  •   Karthikeyan Ganesan    4 年前

    将此代码添加到 .htaccess

    RewriteEngine On
    RewriteRule .* - [e=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    

    Authorization: {auth_code} 最后通过使用 $_SERVER['HTTP_AUTHORIZATION']

    注意:上面的一个是针对apache的,如果您使用nginx,则不需要更新任何内容。您可以在nginx中轻松获得值,如:

    authorization 键,只需将 $\u服务器['HTTP\u AUTHORIZATION'] HTTP_ 作为中的前缀 $_SERVER

    postman_token => HTTP_POSTMAN_TOKEN
    test_key => HTTP_TEST_KEY
    
        4
  •  13
  •   Houssin Boulla    4 年前

    只需使用:

    $headers = apache_request_headers();
    $token = $headers['token'];
    
        5
  •  12
  •   Community CDub    8 年前

    Authorization https://stackoverflow.com/a/17490827

    解决方案取决于使用哪个Apache模块将请求传递给应用程序:

    mod\u wsgi、mod\u fcgid:

    计算机生成接口:

    其他黑客-按摩这个问题的标题: