我正在使用 Angular 2 v2.3.1(最新版本)。 我需要在请求 header 中发送到我的后端 X-CSRF-TOKEN。我在 Angular 2 文档上找到了一个解决方案:https://angular.io/docs/ts/latest/guide/security.html#!#http
我实现了自己的 XSRFStrategy:
export class IlmsCookieStrategy implements XSRFStrategy {
constructor(
private cookieName: string = 'CSRF-TOKEN',
private headerName: string = 'X-CSRF-TOKEN') { }
configureRequest(req: Request): void {
console.log('Configure request');
let token = __platform_browser_private__.getDOM().getCookie(this.cookieName);
if (token && !req.headers.has(this.headerName)) {
req.headers.set(this.headerName, token);
}
}
}
我尝试将其加载到我的 main.ts 中:
platformBrowserDynamic().bootstrapModule(
AppModule,
[
{
provide: XSRFStrategy,
useClass: IlmsCookieStrategy
}
]
);
但是控制台日志没有显示,并且 header 没有添加到我的请求 header 中。怎么了?请帮助我
最佳答案
不要在 main.ts 中使用 Class,而是尝试使用“useValue”并实现您自己的 xsrfStrategy,如下所示:
import { HttpModule, XSRFStrategy, CookieXSRFStrategy, Http } from '@angular/http';
export function IlmsCookieStrategy(http: Http) {
return new CookieXSRFStrategy('RESPONSE_TOKEN', 'X-CSRFToken');
}
在您的应用程序模块中使用它,如下所示:
providers: [
{ provide: XSRFStrategy, useValue: IlmsCookieStrategy}
],
希望这对您有用。
关于javascript - Angular 2 XSRF策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41565986/