【问题标题】:How to ignore SSL certificate validation in node requests?如何忽略节点请求中的 SSL 证书验证?
【发布时间】:2019-07-21 00:58:43
【问题描述】:

我需要使用 node.js 为我的一些 https 请求禁用对等 SSL 验证 现在我使用node-fetch 包,据我所知,它没有那个选项。

这应该类似于 CURL 的 CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false

是否有任何网络包允许这样做?有没有办法在 axios 中跳过 SSL 验证?

【问题讨论】:

    标签: node.js axios node-fetch


    【解决方案1】:

    到目前为止,Axios 还没有解决这种情况 - 你可以尝试:

    process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
    

    但这是一个非常糟糕的主意,因为它会在整个节点服务器上禁用 SSL。

    或者,您可以将 axios 配置为使用自定义代理,并将 rejectUnauthorized 设置为 false,如 here 所述。

    例子:

    const https = require('https');
    const axios = require('axios')
    //or
    // import https from 'https';
    // import axios from 'axios';
    
    // At instance level
    const instance = axios.create({
      httpsAgent: new https.Agent({  
        rejectUnauthorized: false
      })
    });
    
    instance.get('https://something.com/foo');
    
    // At request level
    const agent = new https.Agent({  
      rejectUnauthorized: false
    });
    
    axios.get('https://something.com/foo', { httpsAgent: agent });
    

    【讨论】:

    • 嗯,所以我更新了我的代码以包含实例示例。我也加了import * as https from 'https'; 但是找不到https
    • 如果使用标准节点 express 使用 const https = require('https');
    • 很晚才加入这里,但我尝试在请求级别添加 httpsAgent,但它似乎根本不起作用。
    • @AKJ 你可能想用一个最少的、可验证的例子来打开一个新问题,也许我们可以提供帮助.. ;)
    • process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';是必须的
    猜你喜欢
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 2014-09-07
    • 1970-01-01
    • 2019-09-02
    • 2016-05-18
    • 1970-01-01
    相关资源
    最近更新 更多