403 仅在我的机器上 - Angular 2 & Tomcat 8.5

403 only on my machine - Angular 2 & Tomcat 8.5

所以我在做一个小组项目,我们所有人都将 git 分支推到了 master 的头上。这意味着我们都是 运行 相同的代码。当我们转到我们项目的登录页面时,我们的 ngOnInit() 发送一个包含自定义 header 的 header 的获取请求,对吗?

createAuthorizationHeader(headers: Headers) {
    let sessionID = JSON.parse(localStorage.getItem('user-data')).JSESSIONID;
    headers.append('JSESSIONID', sessionID);
    headers.append('Access-Control-Allow-Headers', 'JSESSIONID');
    headers.append('Access-Control-Allow-Origin', 'http://localhost:4200/webplayer');
  }

ngOnInit() {
    let header = new Headers();
    this.createAuthorizationHeader(header);
    let params = new URLSearchParams();
    let options = new RequestOptions({ headers: header, params: params             });

    this.http.get('http://localhost:8080/sample-webapp/rest/music/landingPage', options)
    .subscribe(data => this.popularArtists = JSON.parse(data["_body"]).popularArtists);

似乎无害,我的队友得到了 200 作为回应,但我收到了这条消息:

顺便说一句,这个请求与我机器上的邮递员一起工作,所以它让我认为这个 必须 与浏览器有关(Safari 也有同样的问题,Chrome, 和 Firefox).

所以我们已经完成了所有工作,从向服务器的 web.xml 添加额外的字段,到添加选项注释,再到删除 cookie。我真的很想知道它不能只在我的机器上工作。我可能在前面的步骤中遗漏了一些东西,所以请告诉我什么是可行的。我还可以根据要求添加我的 web.xml 和其他内容。

后端 CORS 过滤器:

    response.getHeaders().add("Access-Control-Allow-Origin", request.getHeaderString("origin"));
    response.getHeaders().add("Access-Control-Allow-Headers", request.getHeaderString("access-control-request-headers"));
    response.getHeaders().add("Access-Control-Allow-Credentials", "true");
    response.getHeaders().add("Access-Control-Expose-Headers", "JSESSIONID");
    response.getHeaders().add("Access-Control-Allow-Methods", request.getHeaderString("access-control-request-method"));

所以我们想通了,并将头函数更改为:

createAuthorizationHeader(headers: Headers) {
    let sessionID = JSON.parse(localStorage.getItem('user-data')).JSESSIONID;
    headers.append('JSESSIONID', sessionID);
}

它奏效了。如果有人能告诉我原因,我将不胜感激。