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

Python本地服务器拒绝JS请求问题排查求助

问题分析与解决方案

问题根源

错误connect ECONNREFUSED ::1:8080说明Node.js的fetch请求尝试通过**IPv6地址::1**连接服务器,但你的Python服务器只监听了IPv4地址,导致连接被拒绝:

  • 浏览器访问正常:浏览器会自动尝试IPv4/IPv6的 fallback,当IPv6连接失败时会切换到IPv4的127.0.0.1
  • JS服务器能正常响应:Node.js的http.createServer默认会同时监听IPv4和IPv6地址,所以不管请求用哪个协议都能命中
  • Python服务器的问题:socketserver.TCPServer绑定("", 8080)时,在Windows系统下默认只监听IPv4的0.0.0.0,不会监听IPv6的::

解决方案(二选一即可)

方案1:修改Python服务器,同时支持IPv4和IPv6

修改服务器绑定的地址为::,并开启地址复用:

import http.server
import socketserver
import json

def open_server(handler, PORT=8080):
    # 绑定到IPv6地址::,同时兼容IPv4请求
    httpd = socketserver.TCPServer(("::", PORT), handler)
    # 允许地址复用,避免重启服务器时端口占用报错
    httpd.allow_reuse_address = True
    print("serving at port", PORT)
    httpd.serve_forever()

class api_handler(http.server.BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header("Content-type", "application/json")
        self.end_headers()
        self.wfile.write(json.dumps({"res1": "res1"}).encode("utf-8"))

open_server(api_handler, PORT=8080)

方案2:修改JS请求地址为IPv4明确地址

把fetch的目标地址从http://localhost:8080改成http://127.0.0.1:8080,强制Node.js使用IPv4连接:

const getRes = async res => {
    console.log("getting res")
    try {
        const response = await fetch("http://127.0.0.1:8080", {
        method: "GET",
        headers: {
            "Content-Type": "application/json",
        },
    })
        if (response.status === 200){
            console.log(response.status)
            const responseJson = await response.json()
            console.log(JSON.stringify(responseJson))
            return responseJson
        }
        console.log(response.status)
    } catch (e) {
        console.log(e)
    }
}

getRes("res1")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 19:50:11