【发布时间】:2020-12-10 02:40:19
【问题描述】:
我正在使用 axios 发出请求以从我的外部 API(它是带有 ExpressJS 和 Nginx 的 HTTP AWS 服务器)获取数据。我在本地机器上使用 Ionic 应用程序的 Web 版本对其进行了测试,一切正常。如果我使用手机的浏览器,我也可以获取数据。
邮递员也是如此,我可以毫无问题地获取数据。
这些请求不起作用的唯一地方是实际设备。查看 Android Studio 控制台,错误是:“Msg: Network Error”(无法弄清楚如何从 axios 错误对象中获取更多信息)。
我按照官方 Ionic 文档配置了 CORS。我已经设置了所有需要的来源和选项(不能使用 * origin 因为我的请求必须使用凭据)。 Express 配置如下所示:
const corsOptions = {
origin: [
'http://localhost:8100',
'http://localhost:8080',
'http://localhost',
'capacitor://localhost',
'ionic://localhost',
],
credentials: true,
optionsSuccessStatus: 200,
exposedHeaders: ["set-cookie"]
}
// Enable preflight requests for all routes
app.options('*', cors(corsOptions));
app.use(cors(corsOptions));
在客户端(请求示例):
try {
const response = await axios('http://my.api.url', {
method: 'get',
withCredentials: true,
headers: {
'Accept': 'application/json'
}
});
const data = response.data;
// Do something with the data
} catch(error) {
console.log(error);
};
我认为它与Capacitor有关,也许非https API存在问题(但问题是为什么它适用于Web版本)。我尝试为我的请求禁用凭据,但错误再次发生。删除 Nginx 似乎也没有任何改变。
更新:axios 也说请求已发送,但服务器没有响应。
【问题讨论】:
标签: javascript reactjs ionic-framework axios