我創建了一個 RN 專案(沒有 Expo)并設定了我的 API 服務。我正在使用dummyapi.io來獲取虛擬發布資料,這是一個 HTTPS 請求。我不斷從 Axios 收到“網路錯誤”,當我查看錯誤詳細資訊時,我看到以下訊息:
"_response": "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “dummyapi.io” which could put your confidential information at risk."
在 Android 上一切正常,所以我認為這是關于 Apple 瘋狂的安全規則。
我嘗試在我的 Info.plist 上添加以下內容,但沒有用:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>www.dummyapi.io</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
為了進一步解釋我的問題,對“google.com”的 GET 呼叫有效,但“jsonplaceholder.typicode.com”無效。我將不勝感激有關此問題的任何幫助,此時我非常絕望。
React Native Version: 0.66.4
React Version: 17.0.2
Axios Version: 0.24.0
uj5u.com熱心網友回復:
您對 IOS 的安全規則是正確的。添加以下內容以plist.info禁用所有應用程式傳輸安全限制,并應允許您通過 HTTP 連接:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
否則,您必須生成根 CA 證書,將其安裝在您的設備上。
以下是如何生成根證書并使用它來生成自簽名證書:https
://www.ibm.com/docs/en/runbook-automation?topic=certificate-generate-root-ca-key
下面是如何安裝它在 IOS 設備上:https ://medium.com/collaborne-engineering/self-signed-certificates-in-ios-apps-ff489bf8b96e
這個問題與:https ://stackoverflow.com/a/38427829/17922074 有關。
uj5u.com熱心網友回復:
我明白了,感謝這個問題!顯然,在進行任何 API 呼叫之前,該應用程式需要完全啟動并運行,這導致 App.js 中出現類似這樣的情況
import {AppState} from 'react-native';
const App = () => {
return (
{AppState.currentState === 'active' && <Navigation />}
);
};
希望這可以幫助遇到類似問題的任何人!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/411768.html
標籤:
