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跨域的问题啦,觉得有用就点一个推荐和关注啦,毕竟我也是一个害羞⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄的小公举。
有疑问加站长微信联系(非本文作者)