我有带有路由的Express API。现在,我将客户端连接到服务器。
在React中,我完成了Login请求(接收Bearer令牌)。现在,我尝试发出GET Authorizeated请求,并且从服务器收到401 Unauthorized。从邮递员,一切都很好。我在Google Chrome浏览器中有CORS扩展程序。
服务器路由:
router.get('/tasks', auth, async (req, res) => {
try {
await req.user.populate('tasks').execPopulate()
res.send(req.user.tasks)
} catch (e) {
res.status(500).send()
}
可以的登录请求。
handleLogInClick = (email, password) => {
console.log("Trying to login ");
fetch("http://localhost:3000/users/login", {
// mode: "no-cors",
method: "POST",
headers: {
Accept: "application/json, text/plain, */*",
"Content-Type": "application/json",
},
body: JSON.stringify({ email: email, password: password }),
})
.then((res) => res.json())
.then((data) =>
this.setState({
data,
}),
);
this.getTasks("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9");
};
我知道令牌,因此我尝试从服务器获取响应并将其传递给函数。我在标题中尝试了一些选项,但失败了。 方法getTasks,下面有401错误
getTasks = (token) => {
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZGNmZjFhMjQzZWUwNTJmNmNkMjAzYzgiLCJpYXQiOjE1NzM5ODEwODV9.qUY8RCpc6ABRX7qPw_ea8lKaFg9xDRw2fkiVne1L-s4";
fetch("http://localhost:3000/tasks", {
method: "GET",
mode: "no-cors",
headers: {
Accept: "application/json, text/plain, */*",
// "Content-Type": "application/json",
Authorization: "Bearer " + token,
},
})
.then((res) => res.json())
.then(
(tasks) =>
this.setState({
tasks,
}),
console.log(token),
);
};
邮递员的要求,带有以下选项:
GET / tasks HTTP / 1.1 主机:localhost:3000 : 授权:承载eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZGNmZjFhMjQzZWUwNTJmNmNkMjAzYzgiLCJpYXQiOjE1NzM5ODEwODV9.qUY8RCpc6ABRX7qPw_ea8lKaFg9xDRw2fkiVne1L-S4 用户代理:PostmanRuntime / 7.19.0 接受: / 缓存控制:无缓存 邮递员令牌:b209d7ee-e254-4594-9616-93ebc86bea99,8e867f14-1d0e-40b5-8f85-76a0d317af84 主机:localhost:3000 接受编码:gzip,放气 连接:保持活动状态 缓存控制:无缓存
在此先感谢您的帮助。