JWT:如何在 header 中发送授权?

JWT: How send authorization in header?

我正在使用 JWT (https://github.com/tymondesigns/jwt-auth) 在我的 API 中生成 session 令牌。

我做了所有相关设置作为作者的文档。

连接 session 后,我使用了 URL 到 return 类别的数据。当我直接在 URL 中传递令牌时,它起作用了。如下:

http://api.domain.com/categories?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9kZXYuaW1pYXZpcFwvYXBpXC9hdXRoXC9hdXRoZW50aWNhdGUiLCJzdWIiOiIxIiwiaWF0IjoxNDIxODQyMzU4LCJleHAiOjE0MjE5Mjg3NTh9.-nqKoARKc2t1bI2j5KFEP_zRU8KCki_dghKe6dtAedY

只有我需要在我对 header 的请求中使用身份验证承载传递令牌。但不起作用。看看我的经历:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9kZXYuaW1pYXZpcFwvYXBpXC9hdXRoXC9hdXRoZW50aWNhdGUiLCJzdWIiOiIxIiwiaWF0IjoxNDIxODQyMzU4LCJleHAiOjE0MjE5Mjg3NTh9.-nqKoARKc2t1bI2j5KFEP_zRU8KCki_dghKe6dtAedY

有什么问题吗?

在JWT文档中提到了我在上面使用的表单的使用。但是不起作用。

请确保您的后端(服务器端)代码中包含以下行 这是为了 PHP。

header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization');

注意上面一行我们允许 "Authorization" header.

一旦你的服务器端代码中有上面一行,那么你可以在函数下面(如果你在 php 中编码)来获取数组中的所有 headers。

getallheaders();

如果您使用的是 Apache,那么 headers 可能不会通过,因为 this known issue 在 Symfony

如果是这种情况,您需要将以下内容添加到您的虚拟主机中:

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]