我想制作一个简单的客户端-服务器应用程序。我对此完全陌生。客户端部分应该用 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")
}
我在本地尝试了您的代码并收到了 CORS 错误。将
func handler
中的标题更改为:
w.Header().Set("Access-Control-Allow-Origin", "*")
错误应该消失。