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

Cors 不适用于 gin 和 golang 组路由

Cors 不适用于 gin 和 golang 组路由

Go
千万里不及你 2023-06-05 18:32:56
我尝试了这个特定的代码,但它一直给我错误没有“访问控制允许来源”package mainimport (    "github.com/gin-contrib/cors"    "github.com/gin-gonic/gin")func main() {    router := gin.Default()    router.Use(cors.Default())    v1 := router.Group("/api/products")    {        v1.GET("/", ListOfProducts)        v1.POST("/post",AddProduct)    }}错误是我的前端是用 Vue.js 编写的,运行在localhost:8000本地主机上,服务器运行在localhost:9000
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

好吧,所以我尝试复制这个,发现我做的 AJAX 请求是错误的,可能你犯了和我一样的错误:


使用类似的配置:


func main() {

    router := gin.Default()

    router.Use(cors.Default())


    v1 := router.Group("/api")

    {

        v1.GET("/", func(c *gin.Context) {

            c.String(http.StatusOK, "Hello world")

        })

    }


    router.Run()

}

此 AJAX 请求将抛出您收到的 CORS 错误:


$.get('http://localhost:8080/api').then(resp => {

  console.log(resp);

});

但是在末尾添加一个“/”就可以了:


$.get('http://localhost:8080/api/').then(resp => {

  console.log(resp);

});

因此,在您的情况下,请尝试请求 URL:(http://localhost:9000/api/products/末尾带有正斜杠)


此外,您还可以将路线修改为如下所示:


v1 := router.Group("/api")

{

    v1.GET("/products", ListOfProducts)

    v1.POST("/products/post",AddProduct)

}

所以你可以在末尾发送没有正斜杠的请求:)


查看完整回答
反对 回复 2023-06-05
?
皈依舞

TA贡献1851条经验 获得超3个赞

r.Use(cors.New(cors.Config{
    AllowOrigins:     []string{"http://localhost:<your_port>"},
    AllowMethods:     []string{http.MethodGet, http.MethodPatch, http.MethodPost, http.MethodHead, http.MethodDelete, http.MethodOptions},
    AllowHeaders:     []string{"Content-Type", "X-XSRF-TOKEN", "Accept", "Origin", "X-Requested-With", "Authorization"},
    ExposeHeaders:    []string{"Content-Length"},
    AllowCredentials: true,
}))

尝试这个


查看完整回答
反对 回复 2023-06-05
?
慕神8447489

TA贡献1780条经验 获得超1个赞

I tried so many things and finally this worked for me:func CORSConfig() cors.Config {
    corsConfig := cors.DefaultConfig()
    corsConfig.AllowOrigins = []string{"http://localhost:3000"}
    corsConfig.AllowCredentials = true
    corsConfig.AddAllowHeaders("Access-Control-Allow-Headers", "access-control-allow-origin, access-control-allow-headers", "Content-Type", "X-XSRF-TOKEN", "Accept", "Origin", "X-Requested-With", "Authorization")
    corsConfig.AddAllowMethods("GET", "POST", "PUT", "DELETE")
        return corsConfig
}

在 func main 中添加:

r = 杜松子酒。默认()

r.Use(cors.New(CORSConfig()))


查看完整回答
反对 回复 2023-06-05
  • 3 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

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