簡體   English   中英

離子反應器/電容器,請求在 web 版本和 postman 但不在設備上工作

[英]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 也表示請求已發送,但服務器沒有響應。

我整理好了,我必須做以下事情。

  1. 必須將 SSL 添加到我的 web 服務器(我使用了letsencrypt)。

  2. 必須將此添加到電容器.config.json:

    “服務器”:{“allowNavigation”:[“my.api.url”]}

電容器官方文檔 - 常用配置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM