在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() } }
差異:
因此,為了解決這個問題,使用者應該更新他們的中間件以匹配工作範例,特別是透過修正中止狀態碼並調整允許的方法。
以上是如何在Go的Gin框架中正確配置CORS中間件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!