Я новичок в API для отдыха с использованием golang. Я пытаюсь отправить данные JSON с помощью javascript выборки на сервер golang, работающий на порту 8080, веб-сайт работает на другом порт на локальном хосте. всякий раз, когда я отправляю данные, я получаю сообщение об ошибке, я думаю, что это связано с COR, но я не знаю, как это исправить, вот код
main. go
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
gosocketio "github.com/graarh/golang-socketio"
"github.com/graarh/golang-socketio/transport"
)
type TxData struct {
To string
From string
Value int
Key string
}
func createeWsSocketServer() *gosocketio.Server {
return gosocketio.NewServer(transport.GetDefaultWebsocketTransport())
}
func transactionHandler(w http.ResponseWriter, r *http.Request) {
(w).Header().Set("Access-Control-Allow-Origin", "*")
fmt.Fprintf(w, "transactionHandler Hit")
fmt.Println("endpoint hit")
var t TxData
decoder := json.NewDecoder(r.Body)
fmt.Println("response BOdy:", decoder)
err := decoder.Decode(&t)
if err != nil {
panic(err)
}
fmt.Printf("%+v", t)
}
func handleRequests() {
wsServer := createeWsSocketServer()
wsServer.On(gosocketio.OnConnection, func(c *gosocketio.Channel) {
c.Join("room")
wsServer.BroadcastToAll("serverEvent", "New Client Joined!")
})
wsServer.On("clientEvent", func(c *gosocketio.Channel, msg string) string {
c.BroadcastTo("room", "roomEvent", msg)
return "returns OK"
})
myRouter := mux.NewRouter().StrictSlash(true)
myRouter.Handle("/", http.FileServer(http.Dir("./static")))
myRouter.Handle("/socket.io/", wsServer)
myRouter.HandleFunc("/transaction", transactionHandler)
log.Panic(http.ListenAndServe(":8080", myRouter))
}
func main() {
handleRequests()
}
index. html (сервер на локальном хосте: 5050)
function postData(fileString) {
let Body = {};
Body.key = fileString;
Body.to = document.getElementById("to").value;
Body.from = document.getElementById("from").value;
Body.amount = document.getElementById("amount").value;
console.log(Body);
fetch("http://localhost:8080/transaction", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(Body),
}).then((resp) => {
console.log(resp);
});
}
отображается ошибка:
net/http.(*conn).serve.func1(0xc0002a80a0)
c:/go/src/net/http/server.go:1772 +0x140
panic(0x7816a0, 0xc000040040)
c:/go/src/runtime/panic.go:973 +0x3a4
main.transactionHandler(0x874940, 0xc0001402a0, 0xc000144500)
C:/Users/emman/Desktop/testing/main.go:35 +0x448
net/http.HandlerFunc.ServeHTTP(0x807e88, 0x874940, 0xc0001402a0, 0xc000144500)
c:/go/src/net/http/server.go:2012 +0x4b
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000138000, 0x874940, 0xc0001402a0, 0xc000144300)
C:/Users/emman/go/src/github.com/gorilla/mux/mux.go:210 +0xe9
net/http.serverHandler.ServeHTTP(0xc000140000, 0x874940, 0xc0001402a0, 0xc000144300)
c:/go/src/net/http/server.go:2807 +0xaa
net/http.(*conn).serve(0xc0002a80a0, 0x8750c0, 0xc00001e400)
c:/go/src/net/http/server.go:1895 +0x873
created by net/http.(*Server).Serve
c:/go/src/net/http/server.go:2933 +0x363
exit status 2