【问题标题】:Axios : authorization header not set on specific request on some iOS devicesAxios:在某些 iOS 设备上未根据特定请求设置授权标头
【发布时间】:2022-10-29 18:33:04
【问题描述】:

我有一个使用 axios 进行 http 请求的 vuejs 应用程序。

授权标头是通过请求拦截器设置的,如下所示:

const api = axios.create({
  baseURL: process.env.API_URL,
  crossdomain: true,
  headers: {
    "Content-Type": "application/json",
    Accept: "application/json",
  },
});

api.interceptors.request.use(
  function (config) {
    if (config.url !== "/register") {
      const accessToken = localStorage.getItem('token');
      if (accessToken) {
        config.headers.Authorization = "Bearer " + accessToken;
      }
    }
    return config;
  },
  function (error) {
    // Do something with request error
    return Promise.reject(error);
  }
);

应用程序中发出的所有请求都通过此拦截器。但是有一个请求没有为某些 ios 设备设置授权标头(它在 web/android 设备和某些 ios 设备上运行良好)。这是请求:

export function getSessions(context, payload) {
  return new Promise((resolve, reject) => {
    api.get("/sessions/" + payload.sportId + "/?begin=" + payload.period.from + "&end=" + payload.period.to)
      .then(({ data }) => {
        resolve(data);
      })
      .catch((error) => {
        reject(error);
      });
  });
}

我不明白可能出了什么问题。所有其他请求都可以正常工作,而该设备不能正常工作。

【问题讨论】:

    标签: vue.js axios http-headers bearer-token quasar-framework


    【解决方案1】:

    我找到了错误的原因:查询之前有一个//?begin=)。该问题发生在 iOS 14.5、14.7 和其他版本上,但在任何其他设备上都没有错误,有时会回答 301 http 代码,仅此而已。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 2021-11-21
      • 2018-04-26
      • 2019-04-11
      • 2021-03-24
      相关资源
      最近更新 更多