【发布时间】:2017-08-06 06:13:28
【问题描述】:
您好,我有以下应用:
前端在 Angular 2 中运行在 localhost:4200
Backened 在 Spring 中运行在 localhost:8080
我正在使用 Spring Security。在服务器站点上,我有 CORSFilter:
response.setHeader("Access-Control-Allow-Origin", "http://localhost:4200");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
response.addHeader("Access-Control-Allow-Credentials", "true");
filterChain.doFilter(request, response);
这是客户网站:
private static headers: Headers = new Headers({ 'Content-Type': 'application/json' });
private static postOptions: RequestOptions = new RequestOptions({ headers: SecureHttpService.headers });
private static getOptions: RequestOptions = new RequestOptions({});
constructor(private http: Http) {
SecureHttpService.postOptions.withCredentials = true;
SecureHttpService.getOptions.withCredentials = true;
}
public get(url: string): Observable<Response> {
return this.http.get(url, SecureHttpService.getOptions);
}
public post(url: string, data: any): Observable<Response> {
return this.http.post(url, data, SecureHttpService.postOptions);
}
如你所见,我设置了 withCredentials = true;
这是我的问题:
- 在 HTTP GET 上发送 SESSIONID。
- 在 HTTP POST 上 SESSIONID 在 不发送。 为什么???
【问题讨论】:
标签: http angular cookies spring-security