为啥我们更喜欢授权标头将承载令牌发送到服务器而不是 URL 编码等其他技术
Posted
技术标签:
【中文标题】为啥我们更喜欢授权标头将承载令牌发送到服务器而不是 URL 编码等其他技术【英文标题】:Why do we prefer Authorization Header to send bearer token to server over other techniques like URL encoding为什么我们更喜欢授权标头将承载令牌发送到服务器而不是 URL 编码等其他技术 【发布时间】:2017-04-15 15:19:15 【问题描述】:为什么授权标头主要用于向服务器发送不记名令牌?为什么我们不将授权令牌作为 URL 参数发送或将其作为 json 有效负载与请求正文一起发布?
【问题讨论】:
【参考方案1】:标头非常适合保存这些数据,它们与请求类型无关。
您可以在正文中发送授权令牌,甚至是 Content-Type
、Content-Length
、缓存标头等其他所有内容,但不同的请求类型(POST
、GET
..)可能具有不同的请求正文格式。 GET
使用 query parameters
POST
/PUT
在正文中以编码形式发送数据(使用 Content-Type: application/x-www-form-urlencoded
使服务器知道传入的数据格式),Content-Type: application/json
在正文中使用 JSON,XML 等。多部分请求的情况变得更加复杂(查看https://***.com/a/19712083/1017363)。
因此,您可以在正文或查询中看到授权令牌使客户端和服务器端的事情变得更加复杂。客户端应该知道如何在每个请求上“匹配”授权令牌,服务器应该知道如何读取这个值。
【讨论】:
以上是关于为啥我们更喜欢授权标头将承载令牌发送到服务器而不是 URL 编码等其他技术的主要内容,如果未能解决你的问题,请参考以下文章
发送带有承载令牌授权标头 (flask_restful + flask_jwt_extended) 的 GET 消息时出现“段不足”
在 Asp.Net Core 中使用 Swagger 在请求中未发送授权承载令牌
为啥 JWT 需要作为 Bearer Token 标头发送?