Angular Http拦截器:如何修正Authorization请求头的Token引号问题
你的问题出在从localStorage获取的token本身包含双引号,拼接后把引号带入了请求头。只需要在使用token前去除两端的双引号即可。
修改后的拦截器代码:
intercept( request: HttpRequest<any>, next: HttpHandler ): Observable<HttpEvent<any>> { let token = localStorage.getItem('token'); // 去除token两端的双引号 if (token) { token = token.replace(/^"|"$/g, ''); } const newRequest = request.clone({ headers: request.headers.set('Authorization', `Bearer ${token}`), }); return next.handle(newRequest); }
补充说明:
- 正则表达式
/^"|"$/g专门匹配token开头和结尾的双引号,替换为空后就能得到纯净的token内容。 - 如果token前后可能存在空格,可以追加
trim()处理:token = token.trim().replace(/^"|"$/g, '')。 - 使用模板字符串
${token}比传统字符串拼接更简洁易读。
内容的提问来源于stack exchange,提问作者Fatih Selvi
相关产品推荐
相关产品推荐

