为了账号安全,请及时绑定邮箱和手机立即绑定

为什么在使用 CORS 时 go 服务器响应 307

为什么在使用 CORS 时 go 服务器响应 307

Go
森栏 2022-12-05 11:12:51
我有一个非常简单的带有 CORS 中间件的应用程序,它似乎可以正常工作并且预检请求按预期工作。但由于某种原因,服务器根据实际请求以 307 响应。在浏览器中重现,来自 postman works correclty。func main() {    router := gin.Default()    router.Use(CORSMiddleware())    accountsGroup := router.Group("/accounts")    accountsGroup.POST("/", postAccount)    router.Run("localhost:8080")}func CORSMiddleware() gin.HandlerFunc {    return func(c *gin.Context) {    c.Header("Access-Control-Allow-Origin", "*")    c.Header("Access-Control-Allow-Credentials", "true")    c.Header("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")    c.Header("Access-Control-Allow-Methods", "POST,HEAD,PATCH, OPTIONS, GET, PUT")    if c.Request.Method == "OPTIONS" {        c.AbortWithStatus(204)        return    }    c.Next()}func postAccount(c *gin.Context) {    response := gin.H{"id": 1}    c.IndentedJSON(http.StatusCreated, response)}飞行前反应实际要求
查看完整描述

1 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

您已经在 下注册了处理程序,/accounts/但您正在向 发出请求/accounts。加上RedirectTrailingSlash默认设置为的设置true是导致重定向的原因。

如果当前路由无法匹配但存在带(不带)尾部斜杠的路径的处理程序,则启用自动重定向。例如,如果/foo/被请求但路由仅存在于/foo,则客户端将重定向到请求 和所有其他请求方法/foo的 http 状态代码。301GET307


查看完整回答
反对 回复 2022-12-05
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信