使用go+vue達(dá)到前后端完全分離短绸,前端vue需要占用一個(gè)端口,后端go也需要占用一個(gè)端口醋闭,就會(huì)產(chǎn)生跨域問題。
前端vue設(shè)置cookie和csrf
Vue.prototype.$http = axios
axios.defaults.baseURL = 'http://127.0.0.1:10000/api'
axios.defaults.xsrfHeaderName = 'X-CSRFToken'
axios.defaults.xsrfCookieName = 'csrftoken'
axios.defaults.withCredentials = true
axios.defaults.timeout = '5000'
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
后端go
orgin := r.Header.Get("Access-Control-Allow-Origin")
if orgin == "" {
orgin = r.Header.Get("Origin")
}
w.Header().Set("Access-Control-Allow-Origin", orgin)
w.Header().Add("Access-Control-Allow-Headers", "X-Requested-With,Content-Type,x-csrftoken") //header的類型
w.Header().Set("Access-Control-Max-Age", "86400")
w.Header().Set("Access-Control-Allow-Methods", "*")
w.Header().Set("Access-Control-Allow-Credentials", "true");
w.Header().Set("content-type", "application/json;charset=UTF-8") //返回?cái)?shù)據(jù)格式是json
前端和后端這樣設(shè)置就能進(jìn)行跨域傳輸數(shù)據(jù)了