it-swarm.com.de

Standardauthentifizierung mit Abruf?

Ich möchte eine einfache Basisauthentifizierung mit fetch schreiben, erhalte aber weiterhin einen 401-Fehler. Es wäre fantastisch, wenn mir jemand sagt, was mit dem Code falsch ist:

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()
}
46
daniel.lozynski

Zwischen Basic und dem verschlüsselten Benutzernamen und dem Kennwort fehlt ein Leerzeichen. 

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

Eine Lösung ohne Abhängigkeiten.

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

Sie können auch btoa anstelle von base64.encode () verwenden.

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

Wenn Sie einen Back-End-Server haben, der vor der App nach den Basis-Auth-Anmeldeinformationen fragt, ist dies meiner Meinung nach ausreichend.

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

NODE USERS (REACT, EXPRESS) FOLGEN SIE DIESEN SCHRITTEN

  1. npm install base-64 --save
  2. import { encode } from "base-64";
  3.  const response = await fetch(URL, {
      method: 'post',
      headers: new Headers({
        'Authorization': 'Basic ' + encode(username + ":" + password),
        'Content-Type': 'application/json'
      }),
      body: JSON.stringify({
        "PassengerMobile": "xxxxxxxxxxxx",
        "Password": "xxxxxxx"
      })
    });
    const posts = await response.json();
    
  4. Vergessen Sie nicht, diese gesamte Funktion als async zu definieren.

0
kumar kundan

Ich teile einen Code, der über einen Basisanforderungshauptteil für den Header "Auth Header" verfügt.

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);
   });
0