2016-09-20 78 views
0

嘗試從頁眉獲取授權。我嘗試了一些在這個網站找到的解決方案,但沒有得到。下面是我的示例代碼如何從頁眉獲取授權?

header('Authorization: Token '.sha1("test123")); 
var_dump(apache_request_headers()); 
exit; 

是否有可能獲取授權從頭?或者其他方法來獲取它?

+0

請檢查此答案@deepwinter [從傳入的PHP請求中獲取自定義授權標頭](http://stackoverflow.com/questions/2902621/fetching-custom-authorization-header-from-incoming-php-request/16311684 #16311684) – chirag

+0

@chirag,謝謝你的回覆,但我也嘗試過這種方法。沒有任何結果 – Amiyar

+0

任何人都可以幫我解決這個問題嗎? – Amiyar

回答

1

我會添加評論,但聲譽不允許。

我很久以前就有過這個問題,並且認爲它與PHP/Apache配置有關。授權頭文件在它們到達您的應用程序之前在某些PHP/Apache配置中被剝離。解決方案是向.htaccess(或虛擬服務器)添加重寫。

我不記得我的決議的細節,但增加這對你的.htaccess可以幫助:

RewriteEngine On RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]

我有另一個應用程序(Symfony框架)使用這個代替:

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

你也試過基本授權 - 看看是否工作?創建一個標題是這樣的:

$username = 'username'; 
    $password = 'password'; 

    $auth = base64_encode($username.':'.$password); 
    $auth_header = 'Basic '.$auth; 

如果使用上面的代碼中,$ auth_header將是「基本dXNlcm5hbWU6cGFzc3dvcmQ =」

和您的完整標題是「授權:基本dXNlcm5hbWU6cGFzc3dvcmQ =」

,如果你發送你的頭,在PHP中您可以使用:

var_dump('username is: '.$_SERVER['PHP_AUTH_USER'] . ' and password is: ' . $_SERVER['PHP_AUTH_PW']); 

這可能至少點你在正確的方向。

我看到的另一件事是,上面的測試代碼在我看來像你正在設置響應頭,但var_dumping請求頭?我假設你的測試涉及一個單獨的文件/應用程序/瀏覽器發送一個真正的請求,你正試圖轉儲。

我也發現,當使用基本授權時,瀏覽器可能會發送OPTIONS預先請求,也可能需要在後續授權請求發送之前處理服務器端。

+0

嘗試過但沒有工作。 – Amiyar

+0

更新了我的回覆 – laney

+0

謝謝,請也upvote這個問題。 – Amiyar