gpt4 book ai didi

node.js - 从服务器的 header 中获取 header token

转载 作者:搜寻专家 更新时间:2023-10-30 21:26:08 24 4
gpt4 key购买 nike

我怎样才能更改代码以获取 token ,因为它始终为空?控制台不返回任何错误,并且在 postman (应用程序)中服务器端工作正常。

我在服务器端有这段代码:

 router.post('/', async (req, res) => {
const { error } = validate(req.body);
if (error) return res.status(400).send(error.details[0].message);
let user = await User.findOne({ username: req.body.username });
if (!user) return res.status(400).send('Invalid username or password.');

const validPassword = await bcrypt.compare(req.body.password,
user.password); //to bcrypt pairnei to req.body.pass kai to kanei encrypt
me to hash kai to sygkrinei me to user.password pou brisletai sth bash
if (!validPassword) return res.status(400).send('Invalid username or password.');

const token = user.generateAuthToken();
res.header('X-OBSERVATORY-AUTH', token).header('Access-Control-Expose-Headers', 'X-OBSERVATORY-AUTH').send(_.pick(user, ['_id', 'email', 'username','isAdmin']));
});
}

以及客户端angular的代码:

login( username: string,  password: string) {
var user: User = { username: username, password: password };
this.http
.post<any>("http://localhost:3000/api/auth",user, {observe:'response'})
.subscribe((res) => {
const token = res.headers.get('X-OBSERVATORY-AUTH');
console.log(token);
this.token = token;
if (token!==null) {
this.isAuthenticated = true;
this.userId = res.body._id;
this.isAdmin=res.body.isAdmin;
this.authStatusListener.next(true);
this.saveAuthData(token, this.userId, this.isAdmin);
}
});
}

最佳答案

这似乎是 HTTP 响应的问题,而不是 Angular。

后端未将 header X-OBSERVATORY-AUTH 添加到 Access-Control-Expose-Headers

浏览器将不允许应用程序访问所有 http 响应 header 。如果您想允许访问某些 header ,则必须将其添加到 Access-Control-Expose-Headers

您可以在此处找到更多信息 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers

编辑:我对 node.js 了解不多,但似乎你唯一要做的就是:

...
res.header('X-OBSERVATORY-AUTH', token).header('Access-Control-Expose-Headers', 'X-OBSERVATORY-AUTH')
...

关于node.js - 从服务器的 header 中获取 header token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com