Skip to content

React-Native Network request failed on Android Emulator API 16-19 with specific SSL Cipher suite #23986

@areeb111

Description

@areeb111

🐛 Bug Report

To Reproduce

This bug is related to React-Native v0.59.1

  1. react-native init testnet
  2. Copy these lines to your App.js above render()
  componentDidMount() {
   	this.testNet();
  }

  testNet(){
  	console.log("Executing test function");
    fetch('https://reqres.in/api/users?page=2').then(response => response.json()).then(json => console.log("TESTOUTPUT",json['total']))
  }

Try to run project on Android Emulator running on API 16-19 with Google APIs,
You will have this error:

03-18 15:00:36.022 2191-2224/com.testnet W/ReactNativeJS: Possible Unhandled Promise Rejection (id: 0):
    TypeError: Network request failed
    onerror@http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:24080:31
    dispatchEvent@http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:28724:31
    setReadyState@http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:28477:33
    __didCompleteResponse@http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:28304:29
    emit@http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:3280:42
    __callFunction@http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:2577:49
    http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:2334:31
    __guard@http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:2531:15
    callFunctionReturnFlushedQueue@http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=false:2333:21
    callFunctionReturnFlushedQueue@[native code]

Notes:

  1. This testing demo is using an HTTPS website, So it's not related to network security config cleartext issue.
  2. The problem occurs with specific SSL/TLS Cipher suites for web-servers which are the following as example:
Cipher suites enabled for https://reqres.in and all other Cloudflare Free plan SSL sites:
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xC009)
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xC00A)
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xC023)
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xC024)
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xC02B)
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xC02C)
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xCC14)

It seems the whole project cannot access internet connectivity,
I have the permission in the manifest to access internet

<uses-permission android:name="android.permission.INTERNET" />

Otherwise you can test the same project on Android Emulator running on API 20 or later.

Expected Behavior

Expected console log output with 'TESTOUTPUT', 12.

Code Example

https://snack.expo.io/@areeb111/testnet

Environment

$ react-native info
info 
  React Native Environment Info:
    System:
      OS: macOS High Sierra 10.13.6
      CPU: (4) x64 Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
      Memory: 393.43 MB / 16.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 9.11.1 - /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 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
      Android SDK:
        API Levels: 22, 23, 24, 25, 26, 27, 28
        Build Tools: 23.0.1, 23.0.3, 24.0.0, 25.0.0, 25.0.2, 25.0.3, 26.0.1, 26.0.2, 27.0.1, 27.0.3, 28.0.3
        System Images: android-16 | Google APIs Intel x86 Atom, android-17 | Google APIs Intel x86 Atom, android-19 | Google APIs Intel x86 Atom, android-22 | Google APIs Intel x86 Atom_64, android-23 | Android TV Intel x86 Atom, android-23 | Google APIs Intel x86 Atom, android-25 | Google Play Intel x86 Atom, android-27 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google APIs Intel x86 Atom
    IDEs:
      Android Studio: 3.2 AI-181.5540.7.32.5056338
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.8.3 => 16.8.3 
      react-native: 0.59.1 => 0.59.1 
    npmGlobalPackages:
      react-native-animatable: 1.2.4
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7
      react-native-modal: 5.4.0

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions