React Native Axios 允许自签名 SSL 证书

7

我正在用React Native编写应用程序,需要进行API请求。该服务器运行在具有自签名SSL证书的服务器上,因此我需要使用Axios和React Native来发出请求并接受响应,以使用自签名证书。

  • 我无法从官方证书颁发机构获取证书。
  • 我已经尝试使用https.Agent,但当使用React Native时似乎不可能(https模块是Node.js标准库的一部分,而React Native未包括其中),因此这也不是一个有效的解决方案。
  • 我倾向于继续使用Axios,但如果有类似功能的库,我也可以考虑切换(我已经尝试了几个库,但没有一个提供功能以允许自签名证书)。

以下是我项目中的示例代码(url是服务器的IP地址):

import axios from 'axios';

const instance = axios.create({ });
instance.get(url)
    .then(res => {
        this.setState({dataSource: res.data});
     })


顺便提一句,我使用ngrok时一切正常,所以自签名证书肯定是唯一的问题。

1
@AlbertoAnderickJr 不行。因为我在使用React Native,所以无法使用https.Agent。 - b3nj4m1n
普通的获取不起作用吗? - Someone Special
@SomeoneSpecial 不。 - b3nj4m1n
1
嗨@b3nj4m1n,你能找到解决这个问题的方法吗? - Sundeep
@MicaelIllos 很遗憾,我最终没有找到解决方案。但公平地说,在提出这个问题后不久,我就停止了寻找。 - b3nj4m1n
显示剩余5条评论
1个回答

0
今天我解决了这个问题!我也有一个React Native应用程序,我使用apisauce,这是一个很棒的库,它在底层使用axios。
我的API在本地运行LAMP堆栈,并且我在/etc/hosts中有一个虚假的开发域名,Apache配置了自签名证书。
不要禁用SSL验证,相信您的证书!
Android上的说明将有所不同,但对于iOS,我执行了以下操作。
  • 通过Airdrop将selfsigned.crt发送到我的iPhone
  • 在设置应用中安装配置文件
  • 下载并启动Proxyman https://proxyman.io/
  • 在iPhone的Wifi设置中设置代理(dev machine IP port 9090)
  • 打开Safari并转到proxy.man/ssl,下载证书
  • 在设置应用中安装配置文件
  • 在“设置”>“通用”>“关于”>“证书信任设置”中为两个证书启用完全信任
现在,您应该能够访问https://your-dev-domain.whatever而没有任何问题,apisauce / axios将不再返回网络错误。

只需记得在开发完成后返回您的wifi设置并再次关闭代理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接