"Client network socket disconnected before secure TLS connection was established"节点 10



当我向谷歌api发送请求时(使用axios或仅使用https(,例如https://www.googleapis.com/blogger/v3/blogs/2399953?key=...

我总是打">在建立安全TLS连接之前断开客户端网络套接字";错误

但如果我向https://api.github.com,它工作得很好。我在谷歌上搜索了这个错误,但找不到太多有用的信息。在这里https://github.com/nodejs/node/issues/21088说如果服务器使用TLS 1.0,这可能会发生,但显然不是我的情况。

我也尝试过谷歌api,但还是遇到了同样的错误。

知道如何修复错误吗?

----更新----

我的问题在5个月前就结束了。我打开了一个针对googleapi的问题,它也被关闭了。我已经放弃了,但令我惊讶的是,交通一直很拥挤。所以我更新了我的问题,希望它能重新开放。

首先,谷歌api已经转移到这里https://github.com/googleapis/google-api-nodejs-client

第二,只需使用vpn运行第一个例子(使用vpn,因为谷歌服务因任何原因被阻止(,我将获得连接ETIMEDOUT,同时我可以从浏览器中获得结果。

const {google} = require('googleapis');
const blogger = google.blogger({
version: 'v3',
auth: 'YOUR API KEY'
});
blogger.blogs.get({blogId: '3213900'}, (err, res) => {
if (err) {
console.error(err);
throw err;
}
console.log(`The blog url is ${res.data.url}`);
});
//But I can get result in browser https://blogger.googleapis.com/v3/blogs/3213900?key=xxx

我认为这个问题是可以解决的,因为nodejs不会通过我的vpn代理发送请求。所以我的问题在某种程度上与这个问题有关,是什么导致了";连接ETIMEDOUT";URL在浏览器中工作时出错?

但那里的解决方案对我不起作用。本文的一个答案是,我如何使用node.jshttp的http代理。客户提到使用请求,它工作!

var request = require("request");
request(
{
url:
"https://blogger.googleapis.com/v3/blogs/3213900?key=xxx",
method: "GET",
proxy: my-vpn-proxy,
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
}
}
);

太糟糕的请求已被否决!我不能让axios也工作!

我还尝试了隧道,得到了read ECONNRESET error;我尝试了全局隧道ng,得到了错误

TypeError: Cannot read property 'proxy' of undefined

但是https代理也可以,

var url = require('url');
var https = require('https');
var HttpsProxyAgent = require('https-proxy-agent');

// HTTP/HTTPS proxy to connect to
var proxy = 'my-vpn-proxy';
var endpoint = 'https://blogger.googleapis.com/v3/blogs/3213900?key=xxx';
var opts = url.parse(endpoint);

var agent = new HttpsProxyAgent(proxy);
opts.agent = agent;

https.get(opts, function (res) {
console.log('"response" event!', res.headers);
res.pipe(process.stdout);
});

所以我认为这个问题可能是可以解决的。

在问题被重新打开后,我提出了另一个针对谷歌api的问题,最终得到了答案!

所以谷歌api已经支持使用代理,请查看这里的

如果其他人面临同样的问题,一个可能的解决方案(如果您使用的是windows操作系统(是遵循以下过程:

  • 按Windows键
  • 搜索Internet选项
  • 单击"Internet选项">
  • 点击"连接">
  • 转到LAN设置
  • 取消选中"将代理服务器用于LAN…">

它应该有效,但永久的解决方案是确保您打开所有可能自动为您设置代理的软件。

如果从终端运行npm/yarn install,请暂时取消代理配置:

unset https_proxy && unset http_proxy

此错误可能与您的代理有关。如果在Unix上,请检查HTTP_PROXY和HTTPS_PROXY环境变量。

在我的案例中,它是由错误的Node版本引起的。不得不运行nvm use,因为它是一个使用版本16的不同项目,而我在以前的项目中使用的是14

相关内容