[英]Ionic React / Capacitor, requests work on web version and with postman but not on a device
我正在使用 axios 發出請求以從我的外部 API 獲取數據(它是 HTTP AWS 服務器,帶有 ExpressJS 和 Nginx)。 我在本地機器上使用我的 Ionic 應用程序的 web 版本對其進行了測試,一切正常。 如果我使用手機的瀏覽器,我也可以獲取數據。
postman 也是如此,我可以毫無問題地獲取數據。
這些請求不起作用的唯一地方是實際設備。 查看 Android Studio 控制台,錯誤是:“消息:網絡錯誤”(無法弄清楚如何從 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 也表示請求已發送,但服務器沒有響應。
我整理好了,我必須做以下事情。
必須將 SSL 添加到我的 web 服務器(我使用了letsencrypt)。
必須將此添加到電容器.config.json:
“服務器”:{“allowNavigation”:[“my.api.url”]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.