如何在 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
}
})
需要在 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
}
})