gpt4 book ai didi

node.js - 发出 https 发布请求时,node.js 中的错误 "ssl3_get_record:wrong version number"

转载 作者:行者123 更新时间:2023-12-03 12:16:21 27 4
gpt4 key购买 nike

我正在尝试通过以下脚本使用 node.js 向我的工作的 api 发出 https 请求

const https = require('https');
const options = {
hostname,
path: fullPath,
port: 80,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Content-Length': data.length
}
};
const req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
res.on('data', chunk => console.log('chunk:', chunk));
});
req.on('error', error => {
console.log('Failed!');
console.log(error);
});
req.write(data);
req.end();

作为回应,我得到
Failed!
Error: write EPROTO 6772:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:c:\ws\deps\openssl\openssl\ssl\record\ssl3_record.c:332:

at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:87:16) {
errno: 'EPROTO',
code: 'EPROTO',
syscall: 'write'
}

我使用 jQuery 在浏览器上提出了这个请求,它工作
$.post({
url, data,
success: res => console.log(res),
});

我尝试使用 header X-SSL-PROTOCOL 没有成功。
url 和 data 是隐藏的,因为它们是 secret 的,但是在 jQuery 示例和 node.js 中它们是相同的。

最佳答案

    port: 80,
method: 'POST',
...
const req = https.request(options, (res) => {

您正在对端口 80 使用 HTTPS,这通常是纯 HTTP。您收到的响应表明服务器未在此端口上提供 HTTPS,这实际上是预期的行为。相反,HTTPS 通常在端口 443 上完成。

I made this request on a browser using jQuery and it worked



不清楚是什么 url是在这个例子中,但如果它只是 https://domain/path然后使用端口 443。如果明确给出,端口 80 将仅与 HTTPS 一起使用,即 https://domain:80/path .

关于node.js - 发出 https 发布请求时,node.js 中的错误 "ssl3_get_record:wrong version number",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60935596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com