Angular 4,带有自定义请求标头

时间:2017-12-18 11:21:53

标签: angular http angular4-httpclient

使用Angular 4应用程序。 创建了http拦截器,用于向api发送请求。

@Injectable()
export class HttpRequestInteceptor implements HttpInterceptor {
    loginUserName = "";
    constructor(private router: ActivatedRoute) { }

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {


        if (environment.Authentication == 1) {           
            // add a custom header


            const newRequest = req.clone({headers: req.headers.set('userName', '11111')});
            return next.handle(newRequest);
        }

        return next.handle(req);
    }
}

我已经在我的app.module.ts中配置了这个拦截器,如下所示

providers: {
      provide: HTTP_INTERCEPTORS,
      useClass: HttpRequestInteceptor,
      multi: true
    }

这里我尝试在get请求中传递自定义标头值,但是当我查看chrome中的网络标签页时,我看不到我的标头值正在传递请求。

我的Asp.Net Web api代码可能是。

HttpApplication app = (HttpApplication)sender;
string    user = app.Context.Request.Headers.GetValues("userName").First();

当我从postman&amp ;;访问网址时,我在web.api代码中获取用户名值高级重置客户端。

但是当我从Angular 4应用程序访问相同的api url时,我没有得到头值。

请在我失踪的地方帮助我。

1 个答案:

答案 0 :(得分:1)

尝试setHeaders https://angular.io/api/common/http/HttpRequest#clone

@Injectable()
export class HttpRequestInteceptor implements HttpInterceptor {
    loginUserName = "";
    constructor(private router: ActivatedRoute) { }

    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {


        if (environment.Authentication == 1) {           
            // add a custom header


            const newRequest = req.clone({
              setHeaders: { 'userName': '11111' }
            });
            return next.handle(newRequest);
        }

        return next.handle(req);
    }
}