gpt4 book ai didi

javascript - Angular 7 标题未设置

转载 作者:行者123 更新时间:2023-11-30 11:03:18 25 4
gpt4 key购买 nike

我正在使用 Angular 7 并创建了一个拦截器以在每个请求中包含身份验证 token 。

这是我的拦截器代码:

import { Observable } from 'rxjs';

import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';

@Injectable()
export class JwtInterceptor implements HttpInterceptor {
constructor() { }

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
const token = localStorage.getItem('authToken');
if (token) {
request = request.clone({
setHeaders: {
authorization: token
}
});
}
return next.handle(request);
}
}

用于验证身份验证 token 的 Node api:

const jwt = require('jsonwebtoken');

function verifyToken(req, res, next) {
var token = req.headers['authorization']; // Coming Undefined
if (!token)
return res.status(403).send({ auth: false, message: 'No token provided.' });
jwt.verify(token, 'top_secret', function (err, decoded) {
if (err)
return res.status(500).send({ auth: false, message: 'Failed to authenticate token.' });
// if everything good, save to request for use in other routes
req.userId = decoded.user.email;
next();
});
}

module.exports = verifyToken;

当使用 Postman 访问 API 时一切正常,但是当使用 Angular 代码发送请求时, Node API 未收到 header 。

Request header when sent from angular

Request header when sent from Postman

Network Tab Details

Request object sent from browser这种奇怪行为的可能原因是什么?

最佳答案

您显示的屏幕截图用于 OPTIONS 请求,CORS 需要.你需要在 nodejs 中启用 CORS

首先,安装cors模块

npm install cors

然后在你的nodejs后台使用它

var cors = require('cors');
app.use(cors());

关于javascript - Angular 7 标题未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56698948/

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