go+vue项目跨域问题
2019-01-01 本文已影响0人
ljh123
使用go+vue达到前后端完全分离,前端vue需要占用一个端口,后端go也需要占用一个端口,就会产生跨域问题。
前端vue设置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") //返回数据格式是json
前端和后端这样设置就能进行跨域传输数据了