283 votes

Authentification de base avec fetch?

Je veux écrire une authentification de base simple avec fetch, mais je continue à avoir une erreur 401. Ce serait génial si quelqu'un me disait ce qui ne va pas avec le code:

 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();

function parseJSON(response) {
return response.json()
}
 

290voto

qoomon Points 720

Une solution sans dépendances.

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

227voto

Lukasz Wiktor Points 663

Il vous manque un espace entre Basic et le nom d'utilisateur et le mot de passe codés.

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

46voto

Ilya Points 21

Vous pouvez également utiliser btoa au lieu de base64.encode ().

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

17voto

OZZIE Points 367

Si vous avez un serveur dorsal demandant les informations d'identification d'authentification de base avant l'application, cela suffit, il l'utilisera à nouveau:

 fetch(url, {
  credentials: 'include',
}).then(...);
 

3voto

Manoj Perumarath Points 962

Je vais partager un code qui a le corps de demande de données de forme d'en-tête d'authentification de base,

 let username = 'test-name';
let password = 'EbQZB37gbS2yEsfs';
let formdata = new FormData();
let headers = new Headers();


formdata.append('grant_type','password');
formdata.append('username','testname');
formdata.append('password','qawsedrf');

headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password));
fetch('https://www.example.com/token.php', {
 method: 'POST',
 headers: headers,
 body: formdata
}).then((response) => response.json())
.then((responseJson) => {
 console.log(responseJson);

 this.setState({
    data: responseJson
 })
  })
   .catch((error) => {
 console.error(error);
   });
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X