REST API的身份验证问题-REST_CANNOT_CREATE

时间:2018-05-13 作者:Ro L

我正在Wordpress中使用RESTAPI。对于身份验证,我使用基本身份验证插件(JSON Basic Authentication)

我使用此请求(来自postman和nodejs):

POST /wp-json/wp/v2/posts HTTP/1.1
Host: **************
Authorization: Basic *********************
Content-Type: application/json
Cache-Control: no-cache

{ "title": "test", "content": "test", "status": "private", "excerpt": "test" }
在我的服务器上进行本地测试时,它工作正常,但在VPS上,我会遇到以下错误:

{
    "code": "rest_cannot_create",
    "message": "Sorry, you are not allowed to create posts as this user",
    "data": {
        "status": 401
    }
}
我知道用户凭据是正确的,并且允许用户创建帖子。

我怀疑auth头在到达rest api之前丢失了。但是我应该从哪里开始调试呢?哪些日志?

2 个回复
SO网友:mrbarletta

Authorization 标头通常由Apache剥离。

你可以用.htaccess

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

SO网友:Antony Fuentes

如果您在这里是因为您已经尝试了所有方法,但仍然无法通过Wordpress Rest API创建资源,那么让我分享一下对我有用的东西。

首先,让我给你一些上下文,我使用Bitnami在AWS实例上启动了WordPress。

然后我安装了WooCommerce并启用了它的API,以便将其作为沙盒系统使用。在那之后,我立即尝试使用Postman创建产品,但每次都会出现如下错误“woocommerce_rest_cannot_create“(”Sorry, you are not allowed to create resources.“”。我尝试了不同的身份验证方法,例如OAuthBasic Auth 但没有一个奏效。

所以我想也许我应该试试WordPress API端点(而不是Woocommerce的端点),看看是否可以创建帖子或用户,尽管这也不起作用。我遇到了如下错误:

  • rest_cannot_create“”("Sorry, you are not allowed to create posts as this user.")
  • rest_cannot_create_user“(”Sorry, you are not allowed to create new users“)
以下是对我有效的方法:

安装Basic Auth plugin, 您可以通过将repo克隆到/opt/bitnami/apps/wordpress/htdocs/wp-content/plugins 然后从WP Admin页面的插件页面激活它。或者,您也可以将repo作为zip文件下载,并从WP Admin的插件页面的文件中进行安装.htaccess 文件在中可用/opt/bitnami/apps/wordpress/htdocs (此文件已隐藏,如果看不到,请不要惊慌)

  • 在下面添加新行RewriteEngine On 和插入RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}] 保存并退出编辑/opt/bitnami/apps/wordpress/conf/httpd-app.conf 在后面添加新行RewriteEngine OnRewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 保存并退出,重新启动Apache:sudo /opt/bitnami/ctlscript.sh restart apache
  • (可选)安装Application Passwords By George Stephanis

    有关更多详细信息,请查看:https://community.bitnami.com/t/setting-up-api-access-to-wordpress-on-aws-ec2-instance/60589/7

  • 结束