0

是否有一种节点原生的方式来解析基本身份验证?

步骤是:

  • 查找身份验证标头
  • 解析编码值
  • 在冒号上标记并返回用户/通行证
  • 也许友好的错误处理/失败消息

不是在寻找 Connect/Express 框架解决方案。

我意识到这是非常简单的手工操作,但如果有一个标准的方法来实现这一点而无需重新发明轮子,那就太好了。

4

1 回答 1

0

所以 HTTP auth 有一个令人困惑的事情。当您有一个带有类似https://user:password@example.com', that will parse just fine withurl.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实例。

于 2013-08-07T18:37:08.567 回答