【发布时间】:2020-12-22 06:09:52
【问题描述】:
我正在运行 Go 服务器并通过 Axios 在 React.js 中发出 POST 请求。 我似乎已经尝试了 StackOverflow 上能够找到的所有内容,但由于某种原因,它仍然无法正常工作。
这是我的服务器代码(我一直在使用 /test 端点进行测试:
func main() {
r := mux.NewRouter()
r.HandleFunc("/api/patients", getPatients).Methods("GET")
r.HandleFunc("/api/patients", createPatient).Methods("POST")
r.HandleFunc("/api/login", validateAdmin).Methods("POST")
r.HandleFunc("/test", testPOST).Methods("POST", "OPTIONS")
// set up server on port 8000
log.Fatal(http.ListenAndServe(":8080", handlers.CORS(handlers.AllowedHeaders([]string{"X-Requested-With", "Content-Type", "Authorization"}), handlers.AllowedMethods([]string{"GET", "POST", "PUT", "HEAD", "OPTIONS"}), handlers.AllowedOrigins([]string{"http://localhost:3000"}))(r)))
}
// Test POST requests
func testPOST(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Access-Control-Allow-Origin", "*")
decoder := json.NewDecoder(r.Body)
// irrelevant code that retrieves data from MySQL
// irrelevant code that retrieves data from MySQL
// irrelevant code that retrieves data from MySQL
w.WriteHeader(http.StatusOK)
// encode inserted patient as json and send back
json.NewEncoder(w).Encode(patient)
}
这是我发出 POST 请求的方式:
function submitData(event) {
console.log("SUBMITTED FORM DATA");
event.preventDefault(); // prevent from page refreshing
const patient = {
name: name,
dob: dob,
phone: phone,
email: email,
address: address
};
// send post request to API
axios.post('http://localhost:8080/test', { patient }, {headers: {'Access-Control-Allow-Origin': '*'}}, { crossdomain: true })
.then (res => {
console.log(res);
console.log(res.data);
})
event.preventDefault(); // prevent from page refreshing
}
我的错误信息:
从源“http://localhost:8080/test”访问 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制检查:否请求的资源上存在 Access-Control-Allow-Origin' 标头。
非常感谢任何帮助!
【问题讨论】:
标签: http go http-headers cors