使用 fetch 进行基本身份验证?

新手上路,请多包涵

我想用 fetch 编写一个简单的基本身份验证,但我一直收到 401 错误。如果有人告诉我代码有什么问题,那就太棒了:

 let base64 = require('base-64');

let url = 'http://eu.httpbin.org/basic-auth/user/passwd';
let username = 'user';
let password = 'passwd';

let headers = new Headers();

//headers.append('Content-Type', 'text/json');
headers.append('Authorization', 'Basic' + base64.encode(username + ":" + password));

fetch(url, {method:'GET',
        headers: headers,
        //credentials: 'user:passwd'
       })
.then(response => response.json())
.then(json => console.log(json));
//.done();

原文由 daniel.lozynski 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

您在 Basic 与编码的用户名和密码之间缺少一个空格。

 headers.set('Authorization', 'Basic ' + base64.encode(username + ":" + password));

原文由 Lukasz Wiktor 发布,翻译遵循 CC BY-SA 3.0 许可协议

一个没有依赖关系的解决方案。

节点

headers.set('Authorization', 'Basic ' + Buffer.from(username + ":" + password).toString('base64'));

浏览器

headers.set('Authorization', 'Basic ' + btoa(username + ":" + password));

原文由 qoomon 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题