首頁 > 後端開發 > Golang > 如何在Go的Gin框架中正確配置CORS中間件?

如何在Go的Gin框架中正確配置CORS中間件?

Patricia Arquette
發布: 2024-12-23 03:00:54
原創
222 人瀏覽過

How to Properly Configure CORS Middleware in Go's Gin Framework?

Go Gin 框架:處理CORS(跨來源資源共享)

在Go 的gin 框架中,配置跨來源資源共享(CORS)允許來自不同來源的客戶端存取您的資源。但是,您可能會遇到 CORS 請求未傳回預期行為的問題,例如使用者在發送 OPTIONS 請求後遇到空回應的情況。

要解決此問題,我們可以分析使用者的提供的中間件並將其與工作的進行比較範例:

func CORSMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Writer.Header().Set("Content-Type", "application/json")
        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
        c.Writer.Header().Set("Access-Control-Max-Age", "86400")
        c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE, UPDATE")
        c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, X-Max")
        c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")

        if c.Request.Method == "OPTIONS" {
            c.AbortWithStatus(200)
        } else {
            c.Next()
        }
    }
}
登入後複製
func CORSMiddleware() gin.HandlerFunc {
    return func(c *gin.Context) {
        c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
        c.Writer.Header().Set("Access-Control-Allow-Credentials", "true")
        c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")
        c.Writer.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT")

        if c.Request.Method == "OPTIONS" {
            c.AbortWithStatus(204)
            return
        }

        c.Next()
    }
}
登入後複製

差異:

  • 中止狀態代碼:工作中間件中止,狀態代碼為204(無內容)用於OPTIONS 請求,而使用者的中間件中止200(OK)。
  • 允許的方法:工作中間件僅允許 POST、OPTIONS、GET 和 PUT 方法,而使用者中間件包括 DELETE 和 UPDATE。

因此,為了解決這個問題,使用者應該更新他們的中間件以匹配工作範例,特別是透過修正中止狀態碼並調整允許的方法。

以上是如何在Go的Gin框架中正確配置CORS中間件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板