gpt4 book ai didi

http - Node.JS 中的基本 HTTP 身份验证?

转载 作者:IT老高 更新时间:2023-10-28 21:53:50 25 4
gpt4 key购买 nike

我正在尝试使用 NodeJS 编写一个 REST-API 服务器,就像 Joyent 使用的服务器一样。 ,一切都很好,除了我无法验证普通用户的身份验证。如果我跳转到终端并执行 curl -u username:password localhost:8000 -X GET,我无法在 NodeJS http 服务器上获取值 username:password。如果我的 NodeJS http 服务器类似于

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");

,我不应该在来自回调的 req 对象中的某处获取值 username:password 吗?如何在不使用 Connect's basic http auth 的情况下获得这些值?

最佳答案

用户名:密码包含在授权 header 中作为 base64 编码字符串

试试这个:

const http = require('http');

http.createServer(function (req, res) {
var header = req.headers.authorization || ''; // get the auth header
var token = header.split(/\s+/).pop() || ''; // and the encoded auth token
var auth = Buffer.from(token, 'base64').toString(); // convert from base64
var parts = auth.split(/:/); // split on colon
var username = parts.shift(); // username is first
var password = parts.join(':'); // everything else is the password

res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('username is "' + username + '" and password is "' + password + '"');
}).listen(1337, '127.0.0.1');

来自 HTTP Authentication: Basic and Digest Access Authentication - Part 2 Basic Authentication Scheme (Pages 4-5)

Backus-Naur 形式的基本身份验证

basic-credentials = base64-user-pass
base64-user-pass = <base64 [4] encoding of user-pass,
except not limited to 76 char/line>
user-pass = userid ":" password
userid = *<TEXT excluding ":">
password = *TEXT

关于http - Node.JS 中的基本 HTTP 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com