Я работаю с API WordPress REST и имею следующую проблему:
Когда я пытаюсь выполнить запрос «POST» или «DELETE», я получаю ошибку 401 – даже для стандартных конечных точек, таких как «wp-json / wp / v2 / posts».
Локально он работает без проблем, но на моем веб-сервере это не так.
Вот ответ от того, когда я пытаюсь сделать запрос «POST» на сервер:
{ "code": "rest_cannot_create", "message": "Sorry, you are not allowed to create new posts.", "data": { "status": 401 } }
… и ГОЛОВЫ:
Access-Control-Allow-Credentials →true Access-Control-Allow-Headers →Authorization Access-Control-Allow-Methods →POST, GET, OPTIONS, PUT, DELETE Access-Control-Allow-Origin → Access-Control-Expose-Headers →X-WP-Total, X-WP-TotalPages Age →0 Allow →GET Connection →keep-alive Content-Length →111 Content-Type →application/json; charset=UTF-8 Date →Wed, 06 Apr 2016 13:59:45 GMT Server →Apache X-Content-Type-Options →nosniff
Вот заголовки для «POST» -Request для «wp-json / wp / v2 / posts» с моего локального сервера:
Access-Control-Allow-Credentials →true Access-Control-Allow-Headers →Authorization Access-Control-Allow-Methods →POST, GET, OPTIONS, PUT, DELETE Access-Control-Allow-Origin → Access-Control-Expose-Headers →X-WP-Total, X-WP-TotalPages Allow →GET, POST Cache-Control →no-cache, must-revalidate, max-age=0 Connection →keep-alive Content-Type →application/json; charset=UTF-8 Date →Wed, 06 Apr 2016 13:57:19 GMT Expires →Wed, 11 Jan 1984 05:00:00 GMT Last-Modified → Location →http://seebook.dev/wp-json/wp/v2/posts/25 Pragma →no-cache Server →nginx Transfer-Encoding →chunked X-Content-Type-Options →nosniff X-Powered-By →PHP/5.5.9-1ubuntu4.14
Как вы можете видеть, локально разрешены как «GET», так и «POST», только на сервере «GET».
Есть ли у вас какие-либо идеи, где проблема может быть?
Я смог решить эту проблему после нескольких часов поиска!
Проблема заключалась в том, что .htaccess не хватало этих правил mod_rewrite:
# BEGIN WP BASIC Auth <IfModule mod_rewrite.c> RewriteCond %{HTTP:Authorization} ^(.*) RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1] </IfModule> # END WP BASIC Auth
Найден фрагмент здесь: https://stackoverflow.com/a/36499422/3754201
ура