go+vue项目跨域问题

使用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

前端和后端这样设置就能进行跨域传输数据了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容