所以我在做一个团队项目,我们所有人都把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作为回应,但我得到这样的信息:
顺便说一下,这个请求适用于我机器上的邮递员,所以它让我认为这一定与浏览器有关(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);
}
而且成功了。如果有人能告诉我原因,我将不胜感激。