HTTPS无法通过JWT授权。请求中没有授权标头

时间:2019-10-25 07:15:18

标签: authentication yii2 http-headers jwt

我有一个基于Yii2框架的API服务器。它通过JSON Web令牌使用身份验证。当我使用http时,它工作正常,提供了Authorization标头。为了检查标头是否存在,我做了一个返回令牌的测试方法。

public function actionTest(){
    return Yii::$app->request->getHeaders()->get('Authorization');
}

当我通过http(邮递员)发出请求时,结果如下

  

“承载eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvc29mdG1hZXN0cmkuY29tIiwiaWF0IjoxNTcxOTg0NjMzLCJleHAiOjE1NzI1ODk0MzMsInVpZCI6MTAwLCJuYmYiOjE1NzE5ODQ2MzMsImRhdGEiOnsidXNlciI6eyJpZCI6IjEiLCJwYXNzX2hhc2giOiIkUCRCdUtCTmNuUkxRWDdBSFFVMThrQ1ZRYjQxUXZicGIwIn19fQ.zbGk8blRIVRz6h4RLwT7wavH1jFv1cajlKwXYuzAZDE”

但是,一旦我通过https进行了同样的操作,它将返回null。 我也有一个.htaccess文件,其中包含以下内容

<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>

不需要身份验证的API路由可以在https上正常工作,因此绝对不是证书问题或相关问题。

我在这里想念什么?也许还必须在htaccess文件中添加其他内容?

1 个答案:

答案 0 :(得分:1)

我刚刚通过更改解决了问题 这个

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

对此

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

我知道第二个版本设置了一个环境变量,而第一个版本没有设置,但是我不知道为什么第一个版本不能与https一起使用而与http一起使用。因此,如果有人可以向我解释,我将不胜感激