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

客户端无法接收Go服务器正确响应,点击按钮返回HTML代码求助

问题分析与解决

你遇到的问题根源在于端口冲突和跨域配置不匹配,导致fetch请求并未真正到达Go服务器,反而拿到了Live Server提供的本地HTML文件。

具体原因

  1. 端口冲突:VS Code的Live Server默认监听5500端口,而你的Go服务器也配置为监听5500,两者无法同时运行。若先启动Live Server,Go服务器会因端口占用启动失败(可查看Go控制台日志确认);若先启动Go服务器,Live Server会自动切换到其他端口(如5501)。
  2. 跨域配置错误:Go服务器设置的Access-Control-Allow-Origin为http://localhost:5500,但如果Live Server实际运行在其他端口,浏览器会因跨域限制拦截请求;更可能的情况是你先启动了Live Server,Go服务器未正常运行,fetch请求直接返回了Live Server的HTML内容。

解决方案

步骤1:修改Go服务器端口

将Go服务器监听端口改为与Live Server不冲突的数值,比如8080:

func main() {
    http.HandleFunc("/", handler)
    // 修改监听端口为8080
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Println("服务器启动失败:", err)
        return
    }
    log.Println("Server started on port 8080")
}

步骤2:更新跨域允许来源

查看Live Server启动后浏览器地址栏的实际地址(如http://localhost:5500或http://localhost:5501),修改Go服务器的Access-Control-Allow-Origin配置:

func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "text/plain; charset=utf-8")
    // 替换为Live Server的实际地址
    w.Header().Set("Access-Control-Allow-Origin", "http://localhost:5500")
    fmt.Fprint(w, "Hello from the server!")
}

测试阶段可临时用*允许所有来源(生产环境禁止):

w.Header().Set("Access-Control-Allow-Origin", "*")

步骤3:调整JavaScript的fetch目标地址

将fetch请求地址改为Go服务器的新端口8080:

fetch("http://localhost:8080")

步骤4:正确启动服务

  1. 先启动Go服务器,确认控制台输出Server started on port 8080。
  2. 再用Live Server启动客户端HTML页面,确认浏览器地址栏显示正确的客户端地址。

验证

点击按钮后,按钮应显示Hello from the server!。若仍有问题,打开浏览器开发者工具(F12),查看网络标签页,确认fetch请求地址为http://localhost:8080,响应状态为200且内容符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:08:12