最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

[试图获取网站内容时被拒绝的请求

IT培训 admin 8浏览 0评论

[试图获取网站内容时被拒绝的请求

我正在编写一个基于Node.js的小型应用程序进行网络抓取。我正在使用axios库来处理HTTP请求。由于某些原因,我无法获取一个网站:

const express = require('express');
const axios = require('axios');

const app = express();
const port = process.env.PORT || 3000;

app.get('/', async (req, res) => {
  const url = '/';
  const fetchRes = await axios.get(url);
  console.log(fetchRes);
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

当我运行服务器并访问http://localhost:3000时出现错误:

UnhandledPromiseRejectionWarning: Error: write EPROTO 4554425792:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:../deps/openssl/openssl/ssl/statem/statem_lib.c:1922:

代码或多或少都很好。例如,当我将url更改为时,我得到了响应。

这里是什么问题?我想这与请求配置有关。我尝试过一点,但没有成功。

回答如下:

这是因为自Node.js 12起,默认的TLS设置已严格。该站点使用的不处理TLS v1.2,但默认情况下在Node.js 12中是必需的。您可以在启动节点时通过命令行标志(--tls-min-v1.0)对此进行更改,我对其进行了测试,并且它可以工作。 node --tls-min-v1.0 app.js

[试图获取网站内容时被拒绝的请求

我正在编写一个基于Node.js的小型应用程序进行网络抓取。我正在使用axios库来处理HTTP请求。由于某些原因,我无法获取一个网站:

const express = require('express');
const axios = require('axios');

const app = express();
const port = process.env.PORT || 3000;

app.get('/', async (req, res) => {
  const url = '/';
  const fetchRes = await axios.get(url);
  console.log(fetchRes);
});

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

当我运行服务器并访问http://localhost:3000时出现错误:

UnhandledPromiseRejectionWarning: Error: write EPROTO 4554425792:error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol:../deps/openssl/openssl/ssl/statem/statem_lib.c:1922:

代码或多或少都很好。例如,当我将url更改为时,我得到了响应。

这里是什么问题?我想这与请求配置有关。我尝试过一点,但没有成功。

回答如下:

这是因为自Node.js 12起,默认的TLS设置已严格。该站点使用的不处理TLS v1.2,但默认情况下在Node.js 12中是必需的。您可以在启动节点时通过命令行标志(--tls-min-v1.0)对此进行更改,我对其进行了测试,并且它可以工作。 node --tls-min-v1.0 app.js

发布评论

评论列表 (0)

  1. 暂无评论