在 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中文网其他相关文章!