相关疑难解决方法(0)

使用okHttp信任所有证书

出于测试目的,我正在尝试将套接字工厂添加到我的okHttp客户端,该客户端在设置代理时信任所有内容.这已经完成了很多次,但是我对一个信任套接字工厂的实现似乎缺少了一些东西:

class TrustEveryoneManager implements X509TrustManager {
    @Override
    public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { }

    @Override
    public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { }

    @Override
    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
        return null;
    }
}
OkHttpClient client = new OkHttpClient();

final InetAddress ipAddress = InetAddress.getByName("XX.XXX.XXX.XXX"); // some IP
client.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ipAddress, 8888)));

SSLContext sslContext = SSLContext.getInstance("TLS");
TrustManager[] trustManagers = new TrustManager[]{new TrustEveryoneManager()};
sslContext.init(null, trustManagers, null);
client.setSslSocketFactory(sslContext.getSocketFactory);
Run Code Online (Sandbox Code Playgroud)

没有请求从我的应用程序发出,并且没有异常被记录,因此它似乎在okHttp中无声地失败.经过进一步调查,似乎Connection.upgradeToTls()在强制握手时,okHttp中有一个异常被吞没.我得到的例外是:javax.net.ssl.SSLException: SSL handshake terminated: ssl=0x74b522b0: SSL_ERROR_ZERO_RETURN occurred. You …

ssl android android-networking okhttp

95
推荐指数
6
解决办法
8万
查看次数

使用ReactNative App中的fetch API忽略自签名SSL证书的错误?

我正在构建一个小型的ReactNative iOS应用程序.在其中,我使用fetch API向我控制的服务器发出一个简单的get请求,该服务器具有有效但自签名的SSL证书.可以理解,这会导致错误.

在iOS/JSC之间,我不确定如何(或者什么!)我可以为我的应用程序配置忽略此错误 - 到目前为止我发现的所有答案都与Objective-C解决方案有关,我正在寻找一些东西我可以与JSC环境一起使用.

javascript ssl ios react-native

19
推荐指数
2
解决办法
1万
查看次数

如何配置axios使用SSL证书?

我正在尝试使用axios向api端点发出请求,我收到以下错误: Error: unable to verify the first certificate

看来,axios使用的https模块无法验证服务器上使用的SSL证书.

使用浏览器访问服务器时,证书有效,我可以查看/下载它.我也可以通过https在我的浏览器上向api发出请求.

我可以通过关闭验证来解决它.这段代码有效.

const result = await axios.post(
    `https://${url}/login`,
    body,
    {
      httpsAgent: new https.Agent({
        rejectUnauthorized: false
      })
    }
  )
Run Code Online (Sandbox Code Playgroud)

问题是,这不会验证SSL证书,因此会打开安全漏洞.

如何配置axios以信任证书并正确验证它?

ssl ssl-certificate node.js axios

11
推荐指数
5
解决办法
3万
查看次数

如何将 network_security_config.xml 添加到 expo 应用程序中的清单而不弹出

我正在用 expo 构建一个应用程序。
使用axios来处理请求。
该 API 具有自签名证书。
请求在 android 7 上失败(它们在 android 9 上工作)

我在网上读到我需要添加一个network_security_config.xml到 android 清单。关联。

我怎样才能在expo(可能是app.json)中做到这一点而不弹出?

谢谢 !

android android-manifest react-native expo

11
推荐指数
1
解决办法
6274
查看次数

Fetch in react native不会在android上使用ssl

当我在我的本机应用程序中使用fetch函数时,事情在iOS上按预期工作,但在android中出错.错误是'TypeError:网络请求失败'.做了一些调试,我发现错误的原因似乎如下:'java.security.cert.CertPathValidatorException:找不到证书路径的信任锚'.

为什么这个在iOS上运行而不在android上,我该如何最好地修复它?是故障是本机还是更深层?

ssl android fetch react-native

10
推荐指数
1
解决办法
4660
查看次数

无法使用react-native进行API调用

我有一个在本地运行的VM,它是使用Vagrant构建的.我可以直接从浏览器卷曲并转到URL.出于某种原因,当我使用fetchAPI 在我的react-native应用程序中进行相同的调用时,它会一直给我Network request failed错误.

以下是代码片段:

fetchData() {

  this.setState({ isLoading: true });

  var baseURL = 'https://192.168.33.33/api/session';

  console.log('URL: >>> ' + baseURL);

  fetch(baseURL)
  .then((response) => response.json())
  .then((responseData) => {
    console.log(responseData);
  })
  .catch(error => {
    console.log(error);
  })
  .done();
}
Run Code Online (Sandbox Code Playgroud)

该baseURL日志返回正确的URL,错误如下所示:

URL: >>> http://192.168.33.33/api/session
TypeError: Network request failed {stack: (...), message: "Network request failed"}
  message: "Network request failed"
  stack: (...)
  get stack: function () { [native code] }
  set stack: function () { [native code] }
  __proto__: Error …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-native

8
推荐指数
1
解决办法
5608
查看次数

在 React Native 中使用 fetch 发出 https 请求

背景

整个互联网上人们都在问为什么他们不能在 React Native 中发出 http 请求。答案通常是因为他们必须更新info.plist. 对我来说,这曾经是一个问题。我更新了我的设置,并http在fetch请求中工作。

从那以后我更新了我的服务器并SSL在我的节点 api 端点上有了。当我在生产服务器上的邮递员中到达端点时,没有任何问题。但是,当我删除添加到info.plist允许请求的设置,然后尝试运行我的应用程序时,在运行访问 fetch 调用中http使用的端点的代码时,我再次收到错误。https

代码示例

我更新了我的代码以发出如下请求:

fetch('https://api.email.com/v1/clients/update', {
...
}
Run Code Online (Sandbox Code Playgroud)

当像这样使用 http 发出请求时:

fetch('http://api.email.com/v1/clients/update', {
    ...
    }
Run Code Online (Sandbox Code Playgroud)

我在info.plist

<key>api.wuno.com</key>
<dict>
    <key>NSExceptionAllowsInsecureHTTPLoads</key>
    <true/>
</dict>
<key>wuno.com</key>
<dict>
    <key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

但现在我再次收到错误:

网络请求失败

问题

现在我已经有了SSL终点API。当被邮递员击中时它正在工作。我从 中删除了例外情况info.plist。我需要采取哪些步骤才能使用https我fetch的react native应用程序?

info.plist fetch react-native

5
推荐指数
0
解决办法
1919
查看次数

如果ssl(https)证书无效,则React Native XMLHttpRequest请求将失败

当我正在使用无效证书的https服务器执行XMLHttpRequest时,React Native会抛出异常"操作无法完成.(NSURLErrorDomain error -1202.)"

是否可以禁用对React Native XMLHttpRequest的ssl警告/检查?

javascript ios react-native

3
推荐指数
1
解决办法
4467
查看次数