【发布时间】:2025-12-16 01:40:01
【问题描述】:
堆栈:部署在 AWS 上的 ReactJS、axios、api
在我的 reactjs 应用程序中,我正在使用 axios 调用部署在 aws 上的 API。此应用在 chrome 和 firefox 中运行良好,但在 IE 11 中失败。
我正在使用下面的代码在请求中添加授权标头和 accessToken
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);
};
当我从 localhost:3000 在 chrome 中运行此应用程序时,chrome 正确调用 OPTIONS 请求,然后使用正确的 Authorization 标头获取请求。
但是当我在 IE 中运行同一个应用程序时,它没有调用 OPTIONS 请求,也没有在 GET 请求中传递 Authorization 标头(但是它正在传递 accessToken 标头)。
【问题讨论】:
-
你有没有试过用F12开发者工具检查是否有错误?另外,参考this thread,建议您检查一下您是否已将该网站添加到IE的信任站点列表中。尝试从中删除。另外,这里有个similar thread,你可以查一下。
-
区分大小写,也许吧?见developer.microsoft.com/en-us/microsoft-edge/platform/issues/…(这里指的是Edge,但提到IE进行相同类型的比较)。
标签: reactjs amazon-web-services axios cross-domain internet-explorer-11