-
Notifications
You must be signed in to change notification settings - Fork 25.1k
Description
Environment
React Native Environment Info:
System:
OS: macOS High Sierra 10.13.4
CPU: x64 Intel(R) Core(TM) i5-5350U CPU @ 1.80GHz
Memory: 47.66 MB / 8.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 8.11.3 - /usr/local/bin/node
npm: 5.6.0 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 11.4, macOS 10.13, tvOS 11.4, watchOS 4.3
Android SDK:
Build Tools: 23.0.1, 26.0.1, 26.0.3, 28.0.2
API Levels: 23, 26, 28
IDEs:
Xcode: 9.4.1/9F2000 - /usr/bin/xcodebuild
npmPackages:
react: 16.4.1 => 16.4.1
react-native: 0.56.0 => 0.56.0
npmGlobalPackages:
create-react-native-app: 1.0.0
react-native-cli: 2.0.1
Description
I try to call a https webservice using fetch. The webservice uses a certificate to be able to connect.
I had the same problem with IOS. I solved the problem by adding in the file RCTHTTPRequestHandler.m this code :
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
{
completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]);
}
On Android, I have this message:
09-03 15:56:13.013 4811-5139/com.mweb_dmc D/SettingsInterface: from settings cache , name = sound_effects_enabled , value = 0
09-03 15:56:13.015 4811-5319/com.mweb_dmc D/libc-netbsd: [getaddrinfo]: hostname=xxx.xxx.xx.xxx; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
09-03 15:56:13.015 4811-5319/com.mweb_dmc I/System.out: [CDS][DNS] getAllByNameImpl netId = 0
09-03 15:56:13.016 4811-5319/com.mweb_dmc D/libc-netbsd: [getaddrinfo]: hostname=xxx.xxx.xx.xxx; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
09-03 15:56:13.016 4811-5319/com.mweb_dmc I/System.out: [CDS]rx timeout:0
09-03 15:56:13.017 4811-5319/com.mweb_dmc I/System.out: [socket][20] connection /xxx.xxx.xx.xxx:1443;LocalPort=43588(0)
[CDS]connect[/xxx.xxx.xx.xxx:1443]
09-03 15:56:13.017 4811-5319/com.mweb_dmc D/Posix: [Posix_connect Debug]Process com.mweb_dmc :1443
09-03 15:56:13.113 4811-5319/com.mweb_dmc I/System.out: [CDS]port[43588]
[socket][/192.168.1.91:43588] connected
09-03 15:56:13.114 4811-5319/com.mweb_dmc D/libc-netbsd: [getaddrinfo]: hostname=xxx.xxx.xx.xxx; servname=(null); netid=0; mark=0
[getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
09-03 15:56:13.115 4811-5319/com.mweb_dmc D/NativeCrypto: ssl=0xaf53cd00 NativeCrypto_SSL_do_handshake fd=0x96f1cd20 shc=0x96f1cd24 timeout_millis=0 client_mode=1 npn=0x0
doing handshake ++
ssl=0xaf53cd00 info_callback where=0x10 ret=1
ssl=0xaf53cd00 handshake start in CINIT before connect initialization
ssl=0xaf53cd00 info_callback calling handshakeCompleted
ssl=0xaf53cd00 info_callback completed
ssl=0xaf53cd00 info_callback where=0x1001 ret=1
ssl=0xaf53cd00 SSL_connect:CINIT before connect initialization
ssl=0xaf53cd00 info_callback ignored
ssl=0xaf53cd00 info_callback where=0x1001 ret=1
ssl=0xaf53cd00 SSL_connect:3WCH_A SSLv3 write client hello A
ssl=0xaf53cd00 info_callback ignored
ssl=0xaf53cd00 info_callback where=0x1002 ret=-1
ssl=0xaf53cd00 SSL_connect:error exit in 3RSH_A SSLv3 read server hello A
ssl=0xaf53cd00 info_callback ignored
doing handshake -- ret=-1
ssl=0xaf53cd00 NativeCrypto_SSL_do_handshake ret=-1 errno=11 sslError=2 timeout_millis=0
09-03 15:56:13.194 4811-5319/com.mweb_dmc D/NativeCrypto: doing handshake ++
ssl=0xaf53cd00 info_callback where=0x1001 ret=1
ssl=0xaf53cd00 SSL_connect:3RSH_A SSLv3 read server hello A
ssl=0xaf53cd00 info_callback ignored
09-03 15:56:13.194 4811-5319/com.mweb_dmc E/NativeCrypto: ssl=0xaf53cd00 cert_verify_callback x509_store_ctx=0x96f1cb4c arg=0x0
ssl=0xaf53cd00 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA
09-03 15:56:13.196 4811-5319/com.mweb_dmc D/NativeCrypto: ssl=0xaf53cd00 cert_verify_callback => 0
09-03 15:56:13.196 4811-5319/com.mweb_dmc D/OpenSSLLib: OpensslErr:Module:16(190:126); file:external/boringssl/src/ssl/s3_clnt.c ;Line:984;Function:ssl3_get_server_certificate
09-03 15:56:13.196 4811-5319/com.mweb_dmc D/NativeCrypto: ssl=0xaf53cd00 info_callback where=0x4008 ret=558
ssl=0xaf53cd00 SSL3 alert write:F:CU fatal certificate unknown
ssl=0xaf53cd00 info_callback ignored
ssl=0xaf53cd00 info_callback where=0x1002 ret=-1
ssl=0xaf53cd00 SSL_connect:error exit in 3RSC_B SSLv3 read server certificate B
ssl=0xaf53cd00 info_callback ignored
doing handshake -- ret=-1
ssl=0xaf53cd00 NativeCrypto_SSL_do_handshake exception => 0
09-03 15:56:13.197 4811-5319/com.mweb_dmc I/System.out: close [socket][/192.168.1.91:43588]
close [socket][/:::43588]
09-03 15:56:13.304 4811-5138/com.mweb_dmc I/ReactNativeJS: { [Error: Error Connection]
line: 119541,
column: 24,
sourceURL: 'http://localhost:8081/index.delta?platform=android&dev=true&minify=false' }
how can I solve this problem for android?
Reproducible Demo
return fetch('https://xxx.xxx.xx.xxx:1443/orawsv/ABLTEST/WSS_MWEB_LOGIN/GETLOGIN', {
method: 'POST',
mode: 'cors',
headers: headers,
credentials: 'include',
body: sr
})
.then((response) =>{
if(!response.ok){
let error = new Error("Error Connection");
throw error;
}
})
.catch((error) => {
console.log(error);
}
)
}