You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js中如何强制从6666(不良端口)获取数据?

解决Node.js v18.14.0中fetch访问不良端口的问题

针对你遇到的6666端口被fetch标准判定为不良端口导致请求失败的问题,有以下几种可行方案:

方案1:使用undici的Client API绕过端口检查

Node.js的fetch基于undici实现,直接使用undici的Client可以手动禁用端口验证:

const { Client } = require('undici');

async function fetchSecretService() {
  // 初始化Client时禁用端口检查
  const client = new Client('http://placeholder.com:6666', { portCheck: false });

  try {
    const { body } = await client.request({
      path: '/secret-service',
      method: 'GET'
    });
    // 根据返回数据类型选择json()或text()
    const result = await body.json();
    console.log(result);
  } catch (error) {
    console.error('请求失败:', error);
  } finally {
    // 记得关闭Client释放资源
    await client.close();
  }
}

fetchSecretService();

方案2:改用Node.js原生http模块发起请求

http模块不受fetch标准的端口阻塞规则限制,可以直接请求目标端口:

const http = require('http');

async function fetchFromBadPort() {
  return new Promise((resolve, reject) => {
    const request = http.get('http://placeholder.com:6666/secret-service', (response) => {
      let responseData = '';
      // 拼接响应数据
      response.on('data', (chunk) => {
        responseData += chunk;
      });
      // 响应结束后返回结果
      response.on('end', () => {
        resolve(responseData);
      });
    });

    // 捕获请求错误
    request.on('error', (error) => {
      reject(error);
    });
  });
}

// 调用示例
fetchFromBadPort()
  .then(data => console.log('响应数据:', data))
  .catch(err => console.error('请求出错:', err));

方案3:全局修改undici配置,让fetch支持不良端口

如果需要继续使用全局fetch函数,可以通过设置全局Dispatcher来禁用端口检查:

const { setGlobalDispatcher, Agent } = require('undici');

// 全局设置Agent,禁用端口检查
setGlobalDispatcher(new Agent({ portCheck: false }));

async function runFetch() {
  const response = await fetch('http://placeholder.com:6666/secret-service', { method: 'GET' });
  const data = await response.json();
  console.log(data);
}

runFetch();

注意:全局修改会影响所有fetch请求,若有其他正常端口的请求需要遵循标准规则,不推荐此方案。

内容的提问来源于stack exchange,提问作者charlie_pl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:19:54