如何在 angular 4 post API 调用中删除授权 Bearer

how to remove authorization Bearer in angular 4 post API call

需要在 POST 调用中移除 Authorization Bearer

下面的代码没有删除来自 http 拦截器的授权承载。

状态码:403 Unauthorized RequestAuthorization header is present, this is not supported

public EMail(Request) {
 const headers = new HttpHeaders()
                .delete('Authorization', 'Bearer ' + sessionStorage.removeItem('accessToken'));
            return this.http.post<Email>(sendMailUrl, request, { headers }).map((data: any) => {
});

如果在 HTTP 拦截器中添加了授权 header,那么您就不能 'remove' 这样的令牌。需要调整HTTP拦截器。

转到您的拦截器文件,它应该像这样开始:

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

然后您可以根据被调用的url添加授权header:

if (req.url !== 'your_email_post_url') {
   // add authorization header code
}

您的代码在 http 拦截器之前执行。您应该增强您的拦截器,以便只为所需的服务器主机附加 header。

如果你使用一个库你通常可以定义 url.

例如https://github.com/manfredsteyer/angular-oauth2-oidc

OAuthModule.forRoot({
    resourceServer: {
        allowedUrls: ['http://www.angular.at/api'],
        sendAccessToken: true
    }
})