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

cmi*_*mii 2 authentication api rest wordpress

我有一个 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
Run Code Online (Sandbox Code Playgroud)

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

不过我有:

{
    "code": "rest_cannot_access",
    "message": "Only authenticated users can access the REST API.",
    "data": {
        "status": 401
    }
}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我用 http 和 https 进行了测试。

怎么了?

cmi*_*mii 6

解决了!

我把它改成了以下

<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>
Run Code Online (Sandbox Code Playgroud)

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