我正在使用 VueJS 用于前端和 Go 用于后端设置登录系统。我目前陷入了以JSON格式将用户名和密码发布到后端的困境。目前,在早些时候与 Axios 运气不好之后,我正在尝试使用 fetch 发布。发布方法:fetch("http://localhost:9444/login", { method: "post", headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({ "emailAddress": "myName", "password": "myPassword" }) }) .then( (response) => { console.log(response) });然后我在后端路由,例如:r := mux.NewRouter().StrictSlash(true)r.HandleFunc("/login", models.LoginHandler(db)).Methods("POST", "OPTIONS")登录处理程序:func LoginHandler(db *sql.DB) func(w http.ResponseWriter, req *http.Request) { return func(w http.ResponseWriter, req *http.Request) { // w.Header().Set("Access-Control-Allow-Origin", "*") // w.Header().Set("Access-Control-Allow-Headers", "*") w.Header().Set("Content-Type", "application/json; charset=utf-8") w.Header().Set("Access-Control-Allow-Origin", "*") // Initialize loginInfo loginInfo := LoginInfo{} // Decode request body using JSON err := json.NewDecoder(req.Body).Decode(&loginInfo) if err != nil { panic(err) } println(loginInfo.EmailAddress) println(loginInfo.Password) w.WriteHeader(http.StatusOK) w.Write([]byte("Test message.")) }}目前导致解码部分崩溃,如下所示:2019/11/12 14:45:53 http: panic serving [::1]:57224: EOFgoroutine 35 [running]:net/http.(*conn).serve.func1(0xc000196000) c:/go/src/net/http/server.go:1769 +0x140panic(0x8be000, 0xc00005c050) c:/go/src/runtime/panic.go:522 +0x1c3_/H_/Development/clientportal/backend/models.LoginHandler.func1(0x9f7360, 0xc0001be000, 0xc0001a8200)...什么可能导致持续 EOF 错误?我已经使用邮递员测试(并确认了正确的功能):{ "emailAddress": "login", "password": "passw"}正确返回状态 200。
1 回答
www说
TA贡献1775条经验 获得超8个赞
我通过在后端使用以下代码添加来接受 OPTIONS 来使其工作。
路由:
r.HandleFunc("/login", models.LoginCORSHandler()).Methods("OPTIONS")
处理器:
// LoginCORSHandler handle OPTIONS request
func LoginCORSHandler() func(w http.ResponseWriter, req *http.Request) {
return func(w http.ResponseWriter, req *http.Request) {
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Methods", "POST")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
w.WriteHeader(http.StatusOK)
}
}
- 1 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消