2016-09-20 2 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 будет "Basic dXNlcm5hbWU6cGFzc3dvcmQ ="

и ваш полный заголовок будет 'Authorization: Basic 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

Спасибо, пожалуйста, также рассмотрите вопрос. – Amiyar

Смежные вопросы