当在URL中传递用户名和密码时,例如: https://Aladdin:OpenSesame@www.example.com/index.html 客户端实际上是否将其发送到授权头中? 这种URL编码需要服务器端进行什么样的处理?
客户端是否实际在授权头中发送此内容? 这取决于客户端是什么。如果客户端是浏览器,答案是否定的。以下是实验结果:- 在Chrome中,不会发送任何授权头。 - 在Firefox中,不会发送任何授权头。Firefox还会提示确认对话框,因为主动发送身份验证信息很奇怪。 - 在Safari中,不会发送任何授权头。Safari还会首先显示一个警告页面,因为它怀疑该URL属于钓鱼网站。 - 在Opera中,不会发送任何授权头。 - 我使用Mac,无法在IE/Edge上运行实验。但根据其他浏览器的行为是合理的,我猜想IE/Edge会采取相同的行动。无论如何,如果有人进行实验并获得结果,我将不胜感激。一般来说,出于安全原因,浏览器会忽略在URL中主动发送的身份验证信息。然而,如果客户端是开发工具,则身份验证信息可能以base64编码并作为授权标头发送。以下是一些实验结果:- 在curl中,是的,授权标头已发送。 - 在Postman中,没有发送授权标头。授权标头是否发送取决于工具的设计。 这种URL编码需要服务器端进行什么样的处理? 在服务器端,您只需要从授权头中获取base64编码字符串,对其进行解码并检查其是否有效。 如果使用HTTP协议,则此类URL编码是否有所不同? 出于安全考虑,通过HTTP的授权标头非常不安全。Base64编码/解码将不会产生任何安全利益,它可以被所有人解码。否则,它们是相同的。