加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在Angular2中的所有请求的请求头中发送“Cookie”?

发布时间:2020-12-17 07:38:28 所属栏目:安全 来源:网络整理
导读:实际上,我们的后端使用Cookie在请求头中验证请求.我知道如果我设置了一个标题“Cookie”,它将拒绝.那么,有没有办法发送一个Cookie到后端? 我猜你有一个阶段,你要求服务器认证你.在此之后(如果验证成功),服务器将在响应中返回一个cookie.浏览器将存储此cooki
实际上,我们的后端使用Cookie在请求头中验证请求.我知道如果我设置了一个标题“Cookie”,它将拒绝.那么,有没有办法发送一个Cookie到后端?
我猜你有一个阶段,你要求服务器认证你.在此之后(如果验证成功),服务器将在响应中返回一个cookie.浏览器将存储此cookie,并再次发送给每个呼叫.

也就是说,在跨域请求(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

编辑(遵循freaker的评论)

从RC2,您可以直接在请求配置中使用withCredentials属性,如下所述:

this.http.get('http://...',{ withCredentials: true })

编辑(在[maxou]注释之后)

记住在每个请求中包含withCredentials:true.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读