我有一個非常簡單的帶有 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 狀態代碼。301
GET
307
- 1 回答
- 0 關注
- 154 瀏覽
添加回答
舉報
0/150
提交
取消