请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请求头的携带,有疑惑

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  if (config.headers) {
    config.headers.authorization = (store.state as StateAll).users.token;
  }
  return config;
}, function (error) {
  return Promise.reject(error);
});

老师,如果这样设置携带请求头设置的话,每次发送请求,不管什么请求都会携带token。发送登录请求也会携带token,登录请求的话,不需要携带token,还有,不一定所有请求都需要携带token,这样设置,是不是有点不合理??
老师有没有什么优化的办法,因为实际开发中,发送有的请求不需要携带token,不光是用户登录,还有其他的请求也不需要携带token,希望老师能详细的讲解一下?

正在回答 回答被采纳积分+3

1回答

西门老舅 2023-11-16 14:47:36

这种情况下,可以在发起请求的时候,携带一个请求参数来判定是否需要携带token,举例如下:


instance.interceptors.request.use(function (config) {

  if (config.headers && shouldIncludeToken(config)) {

    config.headers.authorization = (store.state as StateAll).users.token;

  }

  return config;

}, function (error) {

  return Promise.reject(error);

});


function shouldIncludeToken(config) {

  return !config.url.includes('/exclude-token-path');

}


0 回复 有任何疑惑可以回复我~
  • 提问者 小雨点3545254 #1
    function shouldIncludeToken(config) {
    
      return !config.url.includes('/exclude-token-path');
    
    }
    这样判断的话,是不是在,不需要token的路由中,添加/exclude-token-path,还得添加到path路径后面,但是需要在路由中一个一个手动添加,而且地址栏中也会变得很长
    回复 有任何疑惑可以回复我~ 2023-11-16 15:31:29
  • 西门老舅 回复 提问者 小雨点3545254 #2
    其实所有接口携带token也没有关系的,因为前端并不需要太多处理,后端其实会自行判断token的情况的,所以就算登录的请求头携带token,也不影响前端和后端的
    回复 有任何疑惑可以回复我~ 2023-11-17 18:45:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信