实际上,我们的后端使用Cookie在请求头中验证请求.我知道如果我设置了一个标题“Cookie”,它将拒绝.那么,有没有办法发送一个Cookie到后端?
我猜你有一个阶段,你要求服务器认证你.在此之后(如果验证成功),服务器将在响应中返回一个cookie.浏览器将存储此cookie,并再次发送给每个呼叫.
原文链接:https://www.f2er.com/angularjs/142642.html也就是说,在跨域请求(CORS)的情况下,您需要将XHR的withCredentials设置为true,以使浏览器在请求中添加Cookie.
为了使用Angular2,我们需要扩展BrowserXhr类,如下所述:
@Injectable() export class CustomBrowserXhr extends BrowserXhr { constructor() {} build(): any { let xhr = super.build(); xhr.withCredentials = true; return <any>(xhr); } }
并用扩展名覆盖BrowserXhr提供程序:
bootstrap(AppComponent,[ HTTP_PROVIDERS,provide(BrowserXhr,{ useClass: CustomBrowserXhr }) ]);
有关详细信息,请参阅此问题:
> Set-cookie in response not set for Angular2 post request
> xmlhttprequest and set-cookie & cookie
从RC2,您可以直接在请求配置中使用withCredentials属性,如下所述:
this.http.get('http://...',{ withCredentials: true })
编辑(在[maxou]注释之后)
记住在每个请求中包含withCredentials:true.