dan*_*ski 81 javascript fetch-api
我想用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()
}
Run Code Online (Sandbox Code Playgroud)
Luk*_*tor 82
您缺少Basic
编码的用户名和密码之间的空格.
headers.set('Authorization', 'Basic ' + base64.encode(username + ":" + password));
Run Code Online (Sandbox Code Playgroud)
qoo*_*mon 50
没有依赖关系的解决方案.
headers.set('Authorization', 'Basic ' + Buffer.from(username + ":" + password).toString('base64'));
Run Code Online (Sandbox Code Playgroud)
kol*_*pto 20
复制粘贴到 Chrome 控制台的简单示例:
fetch('https://example.com/path', {method:'GET',
headers: {'Authorization': 'Basic ' + btoa('login:password')}})
.then(response => response.json())
.then(json => console.log(json));
Run Code Online (Sandbox Code Playgroud)
或与await
:
let response = await fetch('https://example.com/path', {method:'GET',
headers: {'Authorization': 'Basic ' + btoa('login:password')}});
let data = await response.json();
console.log(data);
Run Code Online (Sandbox Code Playgroud)
小智 10
您也可以使用btoa代替base64.encode()。
headers.set('Authorization', 'Basic ' + btoa(username + ":" + password));
Run Code Online (Sandbox Code Playgroud)
如果您有一个后端服务器在应用程序之前要求提供基本身份验证凭据,那么这就足够了,它将重新使用它:
fetch(url, {
credentials: 'include',
}).then(...);
Run Code Online (Sandbox Code Playgroud)
节点用户(反应、表达)遵循这些步骤
npm install base-64 --save
import { encode } from "base-64";
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();
Run Code Online (Sandbox Code Playgroud)不要忘记将整个函数定义为 async