首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE 11在API调用中未传递Authorization标头

IE 11在API调用中未传递Authorization标头
EN

Stack Overflow用户
提问于 2019-06-25 10:52:33
回答 2查看 2K关注 0票数 7

堆栈:部署在亚马逊网络服务上的ReactJS、axios、api

在我的reactjs应用程序中,我使用axios调用在aws上部署的API。这个应用程序在chrome和firefox上运行良好,但在IE 11上失败了。

所有接口配置正确,允许在访问控制头部进行授权

我使用以下代码在请求中添加授权头和accessToken

代码语言:javascript
复制
   const axiosInstance = axios.create({
  baseURL: `https://abc.api.nonprod.org/`
});

export const createTokenHeaders = (idToken, accessToken) => ({
  authorization: `Bearer ${idToken}`,
  accessToken: `Bearer ${accessToken}`
});
// Add a request interceptor
export const reqInterceptor = config =>
  // get the bearer token and add it in the header
  Auth.currentSession()
    .then(data => {
      const idToken = data.getIdToken().getJwtToken();
      const accessToken = data.getAccessToken().getJwtToken();
      // eslint-disable-next-line no-param-reassign
      config.headers = Object.assign({}, config.headers, createTokenHeaders(idToken, accessToken));
      return config;
    })
    .catch(err => {
      console.log(err);
      throw new Error('Error getting bearer token');
    });

axiosInstance.interceptors.request.use(reqInterceptor);

export const performGet = (uri, queryParams = {}, headers) => {
  const requestParams = {
    params: queryParams,
    headers
  };
  return axiosInstance.get(uri, requestParams);
};

当我在chrome中从localhost:3000运行这个应用程序时,chrome可以正确地调用OPTIONS请求,然后使用正确的Authorization头获取请求。

但是,当我在IE中运行相同的应用程序时,它不会调用OPTIONS请求,也不会在GET请求中传递Authorization header (但是它会传递accessToken header)。

EN

回答 2

Stack Overflow用户

发布于 2019-07-03 23:24:26

您的IE是否在增强保护模式下运行?这似乎不是代码问题。https://www.npmjs.com/package/react-native-axios

react-native-axios支持IE11。使用f12调试器并检查网络通信中是否有未找到的url。

票数 0
EN

Stack Overflow用户

发布于 2019-07-04 04:47:02

您可能需要设置withCredentials: true,以便将authorization headers传递给CORS请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56746213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档