Я хочу написать простую базовую аутентификацию с помощью 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();
function parseJSON(response) {
return response.json()
}
javascript
fetch-api
Дэниел Лозинский
источник
источник
base64
относится к библиотеке, импортированной в исходный пост. Это не встроенный глобал, а библиотека, импортированная в модуль CJS.Решение без зависимостей.
Узел
Браузер
источник
window.btoa(username + ':' + password);
developer.mozilla.org/en-US/docs/Web/API/WindowBase64/…window.btoa(unescape(encodeURIComponent(string)));
должноfetch
там не существует.Вы также можете использовать btoa вместо base64.encode ().
источник
Если у вас есть внутренний сервер, запрашивающий учетные данные Basic Auth перед приложением, этого достаточно, он будет использовать их повторно:
источник
Простой пример копирования и вставки в консоль Chrome:
источник
ПОЛЬЗОВАТЕЛИ УЗЛА (РЕАГИРОВАТЬ, ЯВНО СЛЕДУЮТ ЭТИМ ШАГАМ
npm install base-64 --save
import { encode } from "base-64";
Не забудьте определить всю эту функцию как
async
источник
Я поделюсь кодом, который имеет тело запроса данных формы Basic Auth Header,
источник
Это не имеет прямого отношения к исходной проблеме, но, вероятно, кому-то поможет.
У меня возникла такая же проблема, когда я пытался отправить аналогичный запрос с использованием учетной записи домена. Итак, моя проблема заключалась в том, что в имени пользователя не использовался экранированный символ.
Плохой пример:
Хороший пример:
источник