2017-03-16 112 views
-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 !!

stuff

stufff2

+0

你试过这个吗? 'w.Header()。Set(“Access-Control-Allow-Origin”,r.Header.Get(“Origin”))''。 – mkopriva

+0

刚才尝试过,它现在甚至不会注册OPTIONS。真的很困惑.. – IvRRimUm

+0

不,它确实注册。但没有改变。 POST仍然返回400,并且不在服务器注册(OPTIONS注册并返回okey)。 – IvRRimUm

回答