401 Несанкционированный с плагином Wordpress Basic Auth

Я установил плагин, созданный командой Wordpress: https://github.com/WP-API/Basic-Auth

Я делаю этот запрос с Wordpress 4.9.4:

GET http://somehostname.com/index.php?rest_route=%2Fwp%2Fv2%2Fposts&per_page=100&page=2&context=edit HTTP/1.1
Host: somehostname.com
Authorization: Basic [****base64encoded username+":"+pass *******]
Accept-Encoding: gzip, deflate
User-Agent: [some user agent name]

Отклик:

HTTP/1.1 401 Unauthorized
Date: Tue, 13 Feb 2018 14:26:12 GMT
Server: Apache
X-Powered-By: PHP/7.1.12
X-Robots-Tag: noindex
Link: <http://somehostname.com/wp-json/>; rel="https://api.w.org/"
X-Content-Type-Options: nosniff
Access-Control-Expose-Headers: X-WP-Total, X-WP-TotalPages
Access-Control-Allow-Headers: Authorization, Content-Type
Vary: Accept-Encoding,User-Agent
Content-Length: 127
Content-Type: application/json; charset=UTF-8

{"code":"rest_forbidden_context","message":"Sorry, you are not allowed to edit posts in this post type.","data":{"status":401}}

5 ответов

Решение

Я исправил это только сейчас, выполнив то, что предлагает этот комментарий: Исправление для основного OAuth Не уверен, что у этого исправления есть какие-либо побочные эффекты?

Пожалуйста, добавьте следующий код на ваш htaccess файл.

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

и если вы вошли в систему как администратор WordPress прямо сейчас, то это не позволит вам создать сообщение, поэтому сначала выйдите из администратора WordPress, а затем попытайтесь сделать запрос.

Эти два решения решили мою проблему.

Я исправил проблему с авторизацией, следуя этому очень краткому совету

https://github.com/WordPress/application-passwords/wiki/Basic-Authorization-Header----Missing

Мне также пришлось переместить блок wordpress в начало htaccess

Из вашего вопроса я делаю вывод, что этого не должно быть. Вы ожидаете некоторый код ответа, который не 4xx разнообразие.

Из заголовка "401 Несанкционированный с Wordpress Basic Auth Plugin" я также делаю скачок, но вполне возможно, что вы думаете, что плагин не позволяет вам получить доступ к этому маршруту в любом смысле.

Итак, имея это в виду, я хотел бы отметить, что данные об ошибках говорят вам нечто довольно точное: этому пользователю не разрешено редактировать посты такого типа. Это не то же самое, что учетные данные этого пользователя недействительны.

{
    "code": "rest_forbidden_context",
    "message": "Sorry, you are not allowed to edit posts in this post type.",
    "data": {
        "status": 401
    }
}

Попробуйте подтвердить, что пользователь, чьи учетные данные вы указываете в [****base64encoded username+":"+pass *******] Формат - это администратор / автор / редактор (или другая роль), у которого есть разрешение на редактирование сообщений того типа, к которому вы пытаетесь получить доступ.

Изменить: см. Эту строку WP-API, где эта ошибка, вероятно, происходит

Я исправил эту проблему, выполнив следующие действия:

  1. Проверьте, если password protectedплагин установлен, то
  2. Перейти к защищенным паролем настройкам плагина
  3. Установите флажок «Разрешить доступ к REST API».
  4. Сохранить изменения

Другие вопросы по тегам