Jwt-auth: Заголовок авторизации не найден

Созданный на 27 нояб. 2019  ·  2Комментарии  ·  Источник: WP-API/jwt-auth

Привет, я использую это с классом GuzzleHttp Client следующим образом:

$blogService = new Client([
            'base_uri' => $baseBlogUrl . '/wp-json/wp/v2/',
            'headers' => [
                'Authorization' => 'Bearer ' . $result['access_token']
            ],
            'debug' => true
        ]);

Это приводит к ошибке: {"code":"rest_authentication_no_header","message":"Authorization header was not found.","data":{"status":403}}

Отладка запроса показывает, что заголовок авторизации существует:

POST /wp-json/wp/v2/users HTTP/1.1
Authorization: Bearer ACCESS_TOKEN_HERE
User-Agent: GuzzleHttp/6.4.1 curl/7.29.0 PHP/7.4.0RC6
Content-Type: application/json

Самый полезный комментарий

Привет,
возможно, нашел какое-то решение для этого.

Добавлены 3 строки в строку .htaccess (кажется, что HTTP_AUTHORIZATION в противном случае вычеркнута):

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

как показано ниже (в этих конкретных местах):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Еще не уверен, что произойдет при обновлении некоторых плагинов, если эти строки будут удалены ...

Изменить: может быть, что-то добавить в README?
Кроме того, интересно, есть ли способ автоматизировать добавление этих строк в файл .htaccess через установку плагина ...

Все 2 Комментарий

Привет,
возможно, нашел какое-то решение для этого.

Добавлены 3 строки в строку .htaccess (кажется, что HTTP_AUTHORIZATION в противном случае вычеркнута):

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

как показано ниже (в этих конкретных местах):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Еще не уверен, что произойдет при обновлении некоторых плагинов, если эти строки будут удалены ...

Изменить: может быть, что-то добавить в README?
Кроме того, интересно, есть ли способ автоматизировать добавление этих строк в файл .htaccess через установку плагина ...

Привет,
возможно, нашел какое-то решение для этого.

Добавлены 3 строки в строку .htaccess (кажется, что HTTP_AUTHORIZATION в противном случае вычеркнута):

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

как показано ниже (в этих конкретных местах):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

Еще не уверен, что произойдет при обновлении некоторых плагинов, если эти строки будут удалены ...

Изменить: может быть, что-то добавить в README?
Кроме того, интересно, есть ли способ автоматизировать добавление этих строк в файл .htaccess через установку плагина ...

Это сработало и для меня. Ваше здоровье.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги