Gin跨域中間件

瀏覽器有跨域限制,需要在header里添加Access-Control-Allow-Origin

package middleware

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func Cors() gin.HandlerFunc {
    return func(context *gin.Context) {
        method := context.Request.Method
        context.Header("Access-Control-Allow-Origin", "*")
        context.Header("Access-Control-Allow-Headers", "Content-Type, AccessToken, X-CSRF-Token, Authorization, Token")
        context.Header("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
        context.Header("Access-Control-Expose-Headers", "Content-Length, Access-Control-Allow-Origin, Access-Control-Allow-Headers, Content-Type")
        context.Header("Access-Control-Allow-Credentials", "true")
        // 允許放行OPTIONS請(qǐng)求
                if method == "OPTIONS" {
            context.AbortWithStatus(http.StatusNoContent)
        }
        context.Next()
    }
}

添加中間件

r.Use(middleware.Cors())

有一個(gè)補(bǔ)充,前端如果需要添加自定義請(qǐng)求頭字段時(shí),比如token

這時(shí)瀏覽器會(huì)預(yù)先發(fā)一個(gè)OPTIONS類(lèi)型的請(qǐng)求,如果添加的自定義字段沒(méi)有包含在“Access-Control-Allow-Headers”里面的話(huà),前端只會(huì)收到一個(gè)沒(méi)有body的response

所以此時(shí)Cors中間件中不僅要處理OPTIONS類(lèi)型的請(qǐng)求,也要在Access-Control-Allow-Headers添加這個(gè)自定義字段

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、解決瀏覽器跨域問(wèn)題的方法有很多種 通過(guò)后端設(shè)置 http Access-Control-* 相關(guān)響應(yīng)頭 通過(guò) ...
    SimpleCXD閱讀 2,032評(píng)論 0 0
  • 前言部分 一、跨域是什么? 跨域是指一個(gè)域下的文檔或腳本試圖去請(qǐng)求另一個(gè)域下的資源(廣義的)。 廣義的跨域場(chǎng)景有以...
    爆發(fā)吧小宇宙閱讀 3,386評(píng)論 0 12
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    他方l閱讀 1,139評(píng)論 0 2
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    Yaoxue9閱讀 1,413評(píng)論 0 6
  • 什么是跨域 跨域,是指瀏覽器不能執(zhí)行其他網(wǎng)站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript實(shí)...
    HeroXin閱讀 955評(píng)論 0 4

友情鏈接更多精彩內(nèi)容