为什么客户端收不到服务器的响应消息?

问题描述 投票:0回答:1

我想制作一个简单的客户端-服务器应用程序。我对此完全陌生。客户端部分应该用 JavaScript 编写,而服务器部分应该用 Go 编写。问题是,当我启动服务器和客户端部分后单击按钮时,我会得到 HTML 代码。看来我设置的端口不正确,或者在客户端处理服务器端的响应时出现错误。或者也许我错误地启动了客户端。

我对 Go 和 HTML-CSS-JS 使用 Visual Studio Code。当检查在没有客户端部分的情况下启动服务器时,我从中收到一条消息(它工作正常)。然后我在 VS Code 中使用 Live Server 启动客户端。当我单击该按钮时,我会收到 HTML 代码形式的响应。应用程序的正确操作是当我单击按钮时接收服务器对按钮的响应。

const btn = document.getElementById("btn");
btn.addEventListener("click", function() {
    fetch("http://localhost:5500")
        .then(response => {
            if (!response.ok) {
                throw new Error("Network response was not ok");
            }
            return response.text();
        })
        .then(data => {
            btn.textContent = data;
        })
        .catch(error => {
            console.error("Error:", error);
        });
});
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Simple application</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <button id="btn">Press</button>
    <script src="script.js"></script>
</body>
</html>

扫码

package main
import (
    "fmt"
    "log"
    "net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "text/plain; charset=utf-8")
    w.Header().Set("Access-Control-Allow-Origin", "http://localhost:5500")
    fmt.Fprint(w, "Hello from the server!")
}
func main() {
    http.HandleFunc("/", handler)
    err := http.ListenAndServe(":5500", nil)
    if err != nil {
        log.Println(err)
        return
    }
    log.Println("Server started on port 5500")
}
javascript go request cors fetch-api
1个回答
0
投票

我在本地尝试了您的代码并收到了 CORS 错误。将

func handler
中的标题更改为:

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

错误应该消失。

© www.soinside.com 2019 - 2024. All rights reserved.