是否有一种节点原生的方式来解析基本身份验证?
步骤是:
- 查找身份验证标头
- 解析编码值
- 在冒号上标记并返回用户/通行证
- 也许友好的错误处理/失败消息
不是在寻找 Connect/Express 框架解决方案。
我意识到这是非常简单的手工操作,但如果有一个标准的方法来实现这一点而无需重新发明轮子,那就太好了。
是否有一种节点原生的方式来解析基本身份验证?
步骤是:
不是在寻找 Connect/Express 框架解决方案。
我意识到这是非常简单的手工操作,但如果有一个标准的方法来实现这一点而无需重新发明轮子,那就太好了。
所以 HTTP auth 有一个令人困惑的事情。当您有一个带有类似https://user:password@example.com', that will parse just fine with
url.parse` 的凭据的 URL 时:
url.parse('https://user:password@example.com')
{ protocol: 'https:',
slashes: true,
auth: 'user:password',
host: 'example.com',
port: null,
hostname: 'example.com',
hash: null,
search: null,
query: null,
pathname: '/',
path: '/',
href: 'https://user:password@example.com/' }
请注意,它url.parse(theUrl).auth
不是url.parse(theUrl).query.auth
您所拥有的。
然而,这就是 URL 本身,就是那个字符串。如果您告诉 HTTP 库实际请求该 URL,则凭据将被转换为 HTTP 请求标头,就像 URL 的其余部分(如主机、路径、端口等)每个都被转换为请求的详细信息并在HTTP 请求标头和正文本身找不到完整的 URL,因为它分布在 TCP 和 HTTP 层中。
这是一个很长的说法,您需要查看请求标头:req.headers.authorization
. url.parse
查看一个简单的 URL 字符串,您在服务器上拥有的是一个实际http.ClientRequest
实例。