Go lang API에 POST 요청을하고 있습니다. JSON을 문자열 형식 즉 원시 텍스트로 전달할 때 작동하지만 JSON을 전송하면 403 오류가 발생합니다. 이 문제의 원인을 설명해 주시겠습니까? String 대신 JSON을 본문에 적용하는 방법을 알려주십시오. 은 여기 내 이동 랭 코드GoSong의 게시물 본문과 함께 Json을 그대로 받아들입니다.
package main
import (
"devmgmtv2/auth"
"github.com/gorilla/handlers"
"github.com/gorilla/mux"
"log"
"net/http"
)
func main() {
router := mux.NewRouter()
auth.AuthInit(router)
ssid.SsidInit(router)
headersOk := handlers.AllowedHeaders([]string{"X-Requested-With"})
originsOk := handlers.AllowedOrigins([]string{"*"})
methodsOk := handlers.AllowedMethods([]string{"GET", "HEAD", "POST", "PUT", "OPTIONS"})
router.HandleFunc("/auth/login", Login).Methods("POST", "OPTIONS")
log.Fatal(http.ListenAndServe(":8000", handlers.CORS(headersOk, originsOk, methodsOk)(router)))
//log.Fatal(http.ListenAndServe(":8000",router))
}
func Login(w http.ResponseWriter, r *http.Request) {
//Create User Struct
var user User
fmt.Println("REquest Coming")
json.NewDecoder(r.Body).Decode(&user)
fmt.Println(user)
userPassword := getUserPassword(user.User)
// call get value for that user
fmt.Println(userPassword)
// check for equality if true, return the structure
// if false return error
if user.Password == userPassword {
w.Header().Set("Content-Type", "text/plain")
w.Write([]byte("success"))
} else {
http.Error(w, "Forbidden", http.StatusForbidden)
}
}
Main.go.입니다
"JSON을 String 형식, 즉 원시 텍스트로 전달할 때 작동하지만 JSON을 전송할 때 작동하는 것은 무엇을 의미합니까? JSON은 텍스트 형식이며 항상 "문자열"또는 "텍스트"로 전송됩니다. 정확히 무엇을 했니? – Volker
JSON.stringify (데이터)를 수행 한 후 데이터를 전송할 때 작동하지만 데이터를 그대로 전송할 때. 그것은 작동하지 않았다. 하지만 NodeJS 서버와 함께 사용했습니다. –
클라이언트 측 코드가 JSON을 생성하지 않는 것 같아서 Go에 아무 문제가 없습니다. {: 사용자, "암호"암호 "사용자"} 당신이 원하는 경우 – Flimzy