我有两个AWS实例,一个用于WordPress网站,另一个用于React应用程序。要将它们连接在一起,我使用“WP REST API - OAuth 1.0a服务器”和“WP-API的JWT身份验证”来访问WP REST API。jwt_auth_no_auth_header关于验证WordPress REST API的错误JWT令牌
我能够通过/wp-json/jwt-auth/v1/token
生成令牌,但是当我试图访问任何其他端点或者试图通过/wp-json/jwt-auth/v1/token/validate
我收到以下错误来验证令牌:
{
"code": "jwt_auth_no_auth_header",
"message": "Authorization header not found.",
"data": {
"status": 403
}
}
我抬头一看,发现几东西要加到.htaccess
。我添加了所有我能找到但没有成功的东西。
RewriteEngine On
RewriteBase/
# Enable HTTP Auth
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
# WordPress
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# For SetEnvIf Authorization
#RewriteRule (.*) - [env=myenv:1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
#SetEnvIf Authorization .+ HTTP_AUTHORIZATION=$0
我添加以下代码,看是否有授权头存在于请求,但没有任何
add_filter('rest_pre_dispatch', 'prefix_show_request_headers', 10, 3);
function prefix_show_request_headers($result, $server, $request) {
$result = $request->get_headers();
return $result;
}
这里(https://github.com/Tmeister/wp-api-jwt-auth/issues/6)我读了WordPress是可能尝试通过cookie来验证默认情况下,方法和抛出错误,并且没有达到JWT认证,所以我说这一段代码,但仍然没有成功
add_filter('rest_authentication_errors', '__return_true');
最后我加“JSON基本身份验证”插件,它也在头文件中发送用户名:密码,并且它可以工作。所以我不确定是否这是头文件被剥离的问题。由于不建议生产服务器,所以我需要JWT身份验证才能正常工作。
任何帮助表示赞赏。
这对我有很大的帮助。为避免未定义的索引错误,您可以执行以下操作:'$ auth = isset($ allHeaders ['AUTHORIZATION'])? $ allHeaders ['AUTHORIZATION']:false;' –
谢谢@steveKim!更新了答案。 –