当前位置: 移动技术网 > IT编程>脚本编程>Go语言 > golang-在gin中cookie跨域设置(配合ajax)

golang-在gin中cookie跨域设置(配合ajax)

2018年04月13日  | 移动技术网IT编程  | 我要评论

1.当我在golang中,在前后端分离的情况下使用cookies时发现,跨域没有被允许。代码如下:

func AccessJsMiddleware() gin.HandlerFunc {
   return func(c *gin.Context) {
      w := c.Writer
      // 处理js-ajax跨域问题
      w.Header().Set("Access-Control-Allow-Origin", "*") //允许访问所有域
      w.Header().Set("Access-Control-Allow-Methods", "OPTIONS, POST")
      w.Header().Add("Access-Control-Allow-Headers", "Content-Type")
      w.Header().Add("Access-Control-Allow-Headers", "Access-Token")
      c.Next()
   }
}

 1.1.这里在程序启动时增加了一个跨域中间件,使用如下

api := rounter.Group("/api")
api.Use(AccessJsMiddleware())

以上设置ajax请求使用cookie时会被拒绝


2.然后我就进行了修改,解决了该问题

2.1.ajax请求增加一个设置

xhrFields: {
 withCredentials: true
},

 2.2.然后修改了跨域中间件的设置

func AccessJsMiddleware() gin.HandlerFunc {
	return func(c *gin.Context) {
		w := c.Writer
		r:=c.Request
		// 处理js-ajax跨域问题
		w.Header().Set("Access-Control-Allow-Credentials", "true")
		w.Header().Set("Access-Control-Allow-Origin", r.Header.Get("Origin")) 
		w.Header().Set("Access-Control-Allow-Methods", "OPTIONS, POST")
		w.Header().Add("Access-Control-Allow-Headers", "Content-Type")
		w.Header().Add("Access-Control-Allow-Headers", "Access-Token")
		c.Next()
	}
}

 以上就解决了cookie跨域的问题啦,觉得有用就点一个推荐和关注啦,毕竟我也是一个害羞⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄的小公举。

 



 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网