Javascript 有角度的7个头不是';我没准备好

Javascript 有角度的7个头不是';我没准备好,javascript,node.js,angular,typescript,angular-http-interceptors,Javascript,Node.js,Angular,Typescript,Angular Http Interceptors,我使用Angular 7并创建了一个拦截器,在每个请求中包含身份验证令牌 这是我的拦截器代码: import { Observable } from 'rxjs'; import { Injectable } from '@angular/core'; import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http'; @Injectable() export class J

我使用Angular 7并创建了一个拦截器,在每个请求中包含身份验证令牌

这是我的拦截器代码:

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);
  }
}
当使用Postman访问API时,一切正常,但当使用angular代码发送请求时,节点API不会接收头


这种奇怪行为的可能原因是什么?

我遇到了一个类似的问题,拦截程序和克隆请求以及授权

我必须添加内容类型并接受标题,然后告诉服务器它是json:

  setHeaders: {
    'Content-Type' : 'application/json; charset=utf-8',
    'Accept'       : 'application/json',
    'Authorization': '' // your token
  }
试着那样做

request.clone({
      headers: request.headers.set(
        'Authorization',
        localStorage.getItem('token')
      )
    })

您显示的屏幕截图是用于选项请求的,这是所需的。您需要在nodejs中启用CORS

首先,安装
cors
模块

npm install cors
然后在nodejs后端使用它

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

@Lealcelderio,是的,我试过了,发现这不是真正的错误。Javascript区分大小写字符。正如lealcedeiro提到的,您正在设置
Authorization
标题,同时需要
Authorization
。但是,您也没有收到
授权
,因此这不是问题所在。在发出请求时,您是否检查了网络选项卡以确认标头正在注入请求?@TimVN,是的,我没有获得任何授权或此授权的值。我已使用网络选项卡详细信息更新了问题。您是否尝试过
request=request.clone({setHeaders:{'Authorization':token},with credentials:true})
您的
JwtInterceptor
调用正确吗?我用这种方法尝试过,但结果相同。标题没有改变我在问题中分享的内容。谢谢David,它起作用了。但我仍然不明白,为什么早些时候邮递员的工作做得很好?@ArjunSingh Postman,提出这样的要求时,在幕后代表你做一些事情。它这样做的原因之一是为了避免,例如CORS错误。@ArjunSingh:CORS只由浏览器实现,而不是像POSTMAN这样的客户端。这就是为什么使用邮递员时没有选项请求的原因
var cors = require('cors');
app.use(cors());