代码之家  ›  专栏  ›  技术社区  ›  cmii

wp rest api和“只有经过身份验证的用户才能访问rest api”

  •  1
  • cmii  · 技术社区  · 6 年前

    我有一个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上使用基本身份验证插件: 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进行了测试。

    发生了什么?

    1 回复  |  直到 6 年前
        1
  •  3
  •   cmii    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>
    

    HTTP_授权规则必须在其他规则之前出现,这是因为L标志存在,L标志意味着(最后一个停止处理规则),因此,如果它在原始Wordpress规则之后,就永远不会出现该规则。