Sac*_*hin 7 amazon-web-services cors internet-explorer-11 reactjs axios
堆栈:ReactJS,axios,api部署在AWS上
在我的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);
};
Run Code Online (Sandbox Code Playgroud)
当我从localhost:3000在chrome中运行此应用程序时,chrome正确调用了OPTIONS请求,然后再调用具有正确Authorization标头的GET请求。
但是,当我在IE中运行相同的应用程序时,它没有调用OPTIONS请求,也没有在GET请求中传递Authorization标头(但是它正在传递accessToken标头)。
您的 IE 是否运行在增强保护模式下?看来不是代码问题。 https://www.npmjs.com/package/react-native-axios
React-native-axios 支持 IE11。使用 f12 调试器并检查网络流量中是否未找到 url。