Express 在NestJS Guard中重定向期间出现异常-错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头
我已经看过很多关于这个错误的帖子,但是由于我无法理解这个错误,所以我没有办法解决这个问题,因此我被要求提出新的问题 我有一个控制器,为我的HTML页面提供服务,如下所示:Express 在NestJS Guard中重定向期间出现异常-错误[ERR_HTTP_HEADERS_SENT]:发送到客户端后无法设置头,express,nestjs,Express,Nestjs,我已经看过很多关于这个错误的帖子,但是由于我无法理解这个错误,所以我没有办法解决这个问题,因此我被要求提出新的问题 我有一个控制器,为我的HTML页面提供服务,如下所示: @Get() @UseGuards(MyGuard) root(@Res() res): void { return res.sendFile( path.resolve( '../dist/index.html' )
@Get()
@UseGuards(MyGuard)
root(@Res() res): void {
return res.sendFile(
path.resolve(
'../dist/index.html'
)
);
}
该路由由一个防护装置保护,该防护装置反过来将我带到一个重定向url,该url向我发出一个令牌,我将被要求在响应中将该令牌设置为cookie。其思想是阻止未经授权的用户通过此防护查看应用程序,并将用户重定向到错误页面
保护逻辑如下所示:
@Injectable()
export class MyGuard implements CanActivate {
constructor() {}
canActivate(context: ExecutionContext): boolean {
const req = context.switchToHttp().getRequest();
const res = context.switchToHttp().getResponse();
const cookie = this.getookie(req);
if (cookie found in cookie and is valid) {
return true;
}
else if (token available in redirect url) {
res.cookie('token', req.query['token']);
return true;
}
else if (token not available in route path) {
const myRedirectionUrl = createRedirectionUrl(req);
**// Error in below snippet
res.writeHead(302, {
Location: myRedirectionUrl // <-- does some validation and redirects to url with token query string
});
res.end()**
}
else {
return false
}
}
}
@Injectable()
导出类MyGuard实现CanActivate{
构造函数(){}
canActivate(上下文:ExecutionContext):布尔值{
const req=context.switchToHttp().getRequest();
const res=context.switchToHttp().getResponse();
constcookie=this.getookie(req);
if(在cookie中找到cookie并且是有效的){
返回true;
}
else if(重定向url中可用的令牌){
res.cookie('token',req.query['token']);
返回true;
}
else if(令牌在路由路径中不可用){
const myRedirectionUrl=createRedirectionUrl(请求);
**//下面代码段中出现错误
文书标题(302{
位置:myRedirectionUrl//