2013-11-25 46 views
2

我能夠創建通行證並簽署他們,我試圖實現一個web服務來註冊通行證和設備。 我已經實現了Web服務端點照顧帖子,刪除和獲取存摺web服務不註冊設備

我在與通無法註冊的問題:

if (strtoupper($_SERVER['REQUEST_METHOD']) === "POST" 
    && isset($_SERVER['HTTP_AUTHORIZATION']) 
    && strpos($_SERVER['HTTP_AUTHORIZATION'], 'ApplePass') === 0 
    && $request[2] === "devices" 
    && $request[4] === "registrations") { 

    $auth_key = str_replace('ApplePass ', '', $_SERVER['HTTP_AUTHORIZATION']); 

$ _ SERVER [「HTTP_AUTHORIZATION」]是返回空,所以我不會進入註冊一個傳遞函數

我已經安裝了從godaddy的ssl證書在我的cPanel管理器 任何其他要完成的服務器?

IM測試使用echo(MAC店)

還我已經我的web服務已創造傳球,並沒有什麼顯示我的日誌

任何幫助將不勝感激

新的PHP和存摺

謝謝

回答

0

您的問題是,您沒有正確掌握授權標頭。

如果您使用的是Apache,那麼大多數PHP/Apache發行版將附帶built in functionapache__request_headers()

如下您可以使用此:

$headers = apache_request_headers(); 

if (strtoupper($_SERVER['REQUEST_METHOD']) === "POST" 
    && isset($headers['Authorization']) 
    && strpos($headers['Authorization'], 'ApplePass') === 0 
    && $request[2] === "devices" 
    && $request[4] === "registrations") { 

    $auth_key = str_replace('ApplePass ', '', $headers['Authorization']); 

如果你的發行沒有apache_request_headers功能,您可以複製它。

if (!function_exists('apache_request_headers')) { 
    function apache_request_headers() { 
     foreach($_SERVER as $key=>$value) { 
      if (substr($key,0,5)=="HTTP_") { 
       $key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5))))); 
       $out[$key]=$value; 
      }else{ 
       $out[$key]=$value; 
      } 
     } 
     return $out; 
    } 
} 

對於Nginx的然後添加以下fastcgi_param到你的配置,那麼你可以用$_SERVER['Authorization']訪問變量。

fastcgi_param Authorization  $http_authorization; 
+0

謝謝!有效。 – user3008885

+0

也在尋找到apache_request_headers();我發現重寫.htaccess你可以訪問$ _SERVER(AUTHORIZATION) RewriteEngine On RewriteRule。* - [E = HTTP_AUTHORIZATION:%{HTTP:Authorization}] user3008885