我有一个外部应用程序,它通过机器到机器的身份验证设置向我的 Laravel API 发送请求。出于某种原因,系统可以在我的开发环境中运行,但是一旦我投入生产,请求就会返回 401 错误。
外部应用程序携带一个身份验证令牌,它在每次请求之前从我的 Laravel 应用程序获取,因此应该正确地对其进行身份验证
作为参考,这是.htaccess
我在出现问题时使用的文件。
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
这是我在外部应用程序中用于从 API 获取令牌的代码,我知道此代码有效,因为我可以看到在后续请求中生成了有效令牌
async function getToken() {
var data = {
'grant_type': 'client_credentials',
'client_id': process.env.CLIENT_ID,
'client_secret': process.env.CLIENT_SECRET
};
const token = await axios.post(`${process.env.REQUEST_URL}oauth/token`, data)
.then(function(response) {
return response.data['access_token'];
});
return token;
}