为了账号安全,请及时绑定邮箱和手机立即绑定

使用 VueJS 将 JSON 发布到本地主机 Go 后端时的 EOF

使用 VueJS 将 JSON 发布到本地主机 Go 后端时的 EOF

Go
LEATH 2023-08-07 10:40:04
我正在使用 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)

    }

}


查看完整回答
反对 回复 2023-08-07
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信