【发布时间】:2020-08-23 06:35:12
【问题描述】:
我正在尝试编写一个测试来验证我的 API 的 CORS 设置是否正确。 API 用 Go 编写并使用 GIN。我有不同的 CORS 设置,具体取决于路由器组。它看起来像:
router := gin.New()
router.Use(gin.Recovery())
domainOneCORS := cors.New(cors.Config{
AllowOrigins: []string{"https://domainone.com"},
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "PATCH"},
AllowHeaders: []string{"Authorization", "Content-Length", "Content-Type", "Origin"},
ExposeHeaders: []string{"Content-Length"},
MaxAge: 12 * time.Hour,
})
domainTwoCORS := cors.New(cors.Config{
AllowOrigins: []string{"https://domaintwo.com"},
AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "PATCH"},
AllowHeaders: []string{"Authorization", "Content-Length", "Content-Type", "Origin"},
ExposeHeaders: []string{"Content-Length"},
MaxAge: 12 * time.Hour,
})
domainOneAPI := router.Group("/one")
domainOneAPI.Use(domainOneCORS)
{
domainOneAPI.GET("", handler.DomainOneHealth)
}
domainTwoAPI := router.Group("/two")
domainTwoAPI.Use(domainTwoCORS)
{
domainTwoAPI.GET("", handler.DomainTwoHealth)
}
我正在尝试找出测试我的配置的最佳方法。我发现的大多数测试都使用处理程序并跳过路由器中间件部分。测试它有意义吗?即使我可以模拟出路由器和响应,也只是确认 HTTP 客户端可以访问端点。不验证不同域上的 Web 应用程序可以访问 API。 我发现this 问题类似,但用于回显。
【问题讨论】:
-
CORS 主要是客户端。您的服务器仅在响应中设置一些标头,并且客户端的工作是阻止或不阻止请求。因此,要测试您的配置,只需检查服务器响应中的标头即可。
标签: go configuration cors go-gin