所以我在做一个团队项目,我们所有人都把git分支推给了master的负责人。意思是我们都在运行相同的代码。当我们转到项目的登录页时,我们的ngOnInit()会发送一个带有包含自定义头的头的get请求,对吗?

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作为回应,但我得到这样的信息:
angular - 403仅在我的机器上-Angular 2和Tomcat 8.5-LMLPHP
顺便说一下,这个请求适用于我机器上的邮递员,所以它让我认为这一定与浏览器有关(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);
}

而且成功了。如果有人能告诉我原因,我将不胜感激。

07-26 06:00