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跨域的問題啦,覺得有用就點一個推薦和關注啦,畢竟我也是一個害羞⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄的小公舉。