WP REST API和“只有经过身份验证的用户才能访问REST API”

时间:2018-05-18 14:20:30

标签: wordpress rest api authentication

我有一个wordpress:https://example.com 我需要使用WP REST API。

在.htaccess中:

# BEGIN WordPress
<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>
# END WordPress

我在wordpress上使用了基本Auth插件:https://github.com/WP-API/Basic-Auth

尽管如此,我有:

{
    "code": "rest_cannot_access",
    "message": "Only authenticated users can access the REST API.",
    "data": {
        "status": 401
    }
}

enter image description here

我使用http和https进行了测试。

怎么了?

2 个答案:

答案 0 :(得分:2)

解决!

我将其更改为以下

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteBase /
RewriteRule ^index\.php$ - [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

HTTP_AUTHORIZATION规则必须先于其他规则,这是因为L标志存在,L标志意味着(最后 - 停止处理规则),因此如果它在原始之后它永远不会达到该规则wordpress规则,

答案 1 :(得分:0)

我遇到了同样的问题,并通过验证是否还有其他密码保护插件来解决它。我正在使用名为Password Protected的插件,并禁用它来生成身份验证令牌。