這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
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.Writerr:=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跨域的問題啦,覺得有用就點一個推薦和關注啦,畢竟我也是一個害羞⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄的小公舉。