我正在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之前丢失了。但是我应该从哪里开始调试呢?哪些日志?
SO网友:Antony Fuentes
如果您在这里是因为您已经尝试了所有方法,但仍然无法通过Wordpress Rest API创建资源,那么让我分享一下对我有用的东西。
首先,让我给你一些上下文,我使用Bitnami在AWS实例上启动了WordPress。
然后我安装了WooCommerce并启用了它的API,以便将其作为沙盒系统使用。在那之后,我立即尝试使用Postman创建产品,但每次都会出现如下错误“woocommerce_rest_cannot_create
“(”Sorry, you are not allowed to create resources.
“”。我尝试了不同的身份验证方法,例如OAuth
和Basic 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 On
在新行中插入:RewriteRule .* - [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