在Angular1中,可以通过配置$ http-provider解决此问题。喜欢:
app.config(function($httpProvider) { $httpProvider.defaults.xsrfCookieName = 'csrftoken'; $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; });
在Angular2中做同样的事情是什么好习惯?
在Angular2中使用http请求,我们需要使用Http类。当然,将CSRF行添加到每个后功能调用中不是一个好习惯。
我猜在Angular2中,我应该创建自己的类,该类继承Angular2的Http类并重新定义后功能。是正确的方法还是更优雅的方法?
Victor K的答案是完全正确的,但是从2.0.0-rc.2角度来看,一种首选的方法是使用CookieXSRFStrategy,如下所示,
bootstrap(AngularApp, [ HTTP_PROVIDERS, provide(XSRFStrategy, {useValue: new CookieXSRFStrategy('csrftoken', 'X-CSRFToken')}) ]);
现已发布Angular 2,以下似乎是使用的正确方法CookieXSRFStrategy。
CookieXSRFStrategy
我已将我的应用程序配置为具有核心模块,但是你可以在主应用程序模块中执行相同的操作:
import { ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core'; import { CommonModule } from '@angular/common'; import { HttpModule, XSRFStrategy, CookieXSRFStrategy } from '@angular/http'; @NgModule({ imports: [ CommonModule, HttpModule ], declarations: [ ], exports: [ ], providers: [ { provide: XSRFStrategy, useValue: new CookieXSRFStrategy('csrftoken', 'X-CSRFToken') } ] }) export class CoreModule { },