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跨域的问题啦,觉得有用就点一个推荐和关注啦,毕竟我也是一个害羞⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄的小公举。

 



 

版权声明:本文为misasky原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/misasky/p/8798199.html