Quiero escribir una autenticación básica simple con fetch, pero sigo recibiendo un error 401. Sería increíble si alguien me dice qué está mal con el código:
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();Le falta un espacio entre Basic y el nombre de usuario y la contraseña codificados.
headers.set('Authorization', 'Basic ' + base64.encode(username + ":" + password));Una solución sin dependencias.
Nodo
headers.set('Authorization', 'Basic ' + Buffer.from(username + ":" + password).toString('base64'));Navegador
headers.set('Authorization', 'Basic ' + btoa(username + ":" + password));En JavaScript puro, también puede usar btoa en lugar de base64.encode() :
headers.set('Authorization', 'Basic ' + btoa(username + ":" + password));Tenga en cuenta que esto solo funcionará con caracteres ASCII.
Si tiene que manejar diferentes codificaciones, consulte la documentación btoa vinculada.