Declinazione di responsabilità: questa soluzione deve essere temporanea e documentata in modo da non rimanere nella fase di produzione del software, ma solo a scopo di sviluppo.
Per iOS, tutto ciò che dovete fare è aprire il vostro xcodeproject (all'interno della vostra cartella iOS in RN) una volta aperto, andare su RCTNetwork.xcodeproj e in quel progetto, navigare a RCTHTTPRequestHandler.m
In questo file si vedrà una linea come questa:
#pragma mark - NSURLSession delegate
subito dopo quella linea, aggiungere questa funzione
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
{
completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
}
E voilà , ora puoi effettuare chiamate insicure alla tua API senza un certificato valido.
Questo dovrebbe essere sufficiente, ma se si riscontrano ancora problemi, potrebbe essere necessario andare a info.plist del progetto, fare clic con il tasto sinistro su di esso e scegliere Apri come ... codice sorgente.
e alla fine basta aggiungere
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
modo il file sarà simile a questa
...
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>NSLocationWhenInUseUsageDescription</key>
<string></string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
</plist>
Per una soluzione pronta produzione reale, https://stackoverflow.com/a/36368360/5943130 tale soluzione è meglio lavorare
nota, letsencrypt non funziona per i server interni che non sono accessibili al pubblico (come ad esempio uno in esecuzione all'interno di un ambiente vagabonda). – IanVS
@IanVS Sì, ma questo non dovrebbe essere un problema se si dispone di un server pubblico per il proprio dominio. La mia guida indica di utilizzare LetCrypt su un server pubblico a cui il dominio punta e quindi copia i certificati sul computer di sviluppo. – m59