-1
现在已经挖了几个小时。CORS沮丧
我vue.js代码:
$(document).ready(function() {
var vue = new Vue({
el: '#login',
data: {
logged_in: false,
username: "",
password: "",
csrf_token: "",
},
methods: {
login: function() {
$.ajax({
url: apiEndpoint + '/login/',
type: "POST",
dataType: "json",
dataType: 'json',
data: JSON.stringify({"username": username.value,
"password": password.value,
"csrf_token": this.csrf_token}),
success: (data) => {
alert(1);
}
});
return false;
},
getCsrfToken: function() {
$.ajax({
url: apiEndpoint + '/login/',
success: (data) => {
this.csrf_token = data["Csrf_Token"];
if(data["User_id"] !== "") {
this.logged_in = true;
}
}
});
}
}
});
vue.getCsrfToken();
});
和后端写在GO代码:
w.Header().Set("Access-Control-Allow-Origin", "*")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
fmt.Printf("METHOD - %s\n", r.Method)
if r.Method == "POST" {
我的服务器处理器:
appmux := http.NewServeMux()
appmux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("../www/static"))))
appmux.Handle("/assets/", http.StripPrefix("/assets/", http.FileServer(http.Dir("../www/assets"))))
appmux.Handle("/login/", commonMiddlewares(http.HandlerFunc(loginHandler)))
appmux.Handle("/logout/", secure(http.HandlerFunc(logoutHandler)))
浏览器发送OPTIONS请求女巫精细。然后它发送一个POST请求并得到400,坏请求,但后端甚至不注册请求(fmt.Print ..)。
为什么我的发布请求获得400?
谢谢!
编辑:PICS !!
你试过这个吗? 'w.Header()。Set(“Access-Control-Allow-Origin”,r.Header.Get(“Origin”))''。 – mkopriva
刚才尝试过,它现在甚至不会注册OPTIONS。真的很困惑.. – IvRRimUm
不,它确实注册。但没有改变。 POST仍然返回400,并且不在服务器注册(OPTIONS注册并返回okey)。 – IvRRimUm