React 前端与 Go 后端的 CORS 错误 [已关闭]

CORS error in React frontend with Go backend [closed]

提问人:Alfie Danger 提问时间:11/15/2023 最后编辑:Alfie Danger 更新时间:11/15/2023 访问量:61

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

7天前关闭。

我有一个使用 go-gin 静态提供服务的 react 前端。当我部署到 AWS 并在 https 上提供它时,我收到 CORS 错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://example.com/auth/login. (Reason: CORS request did not succeed)

它在本地工作,当我使用相同的 ssl 证书(不是通配符证书)将其部署到测试环境时。我对杜松子酒路由器的配置如下所示:

   corsConfig := cors.Config {
        AllowOrigins: []string{"https://example.com"}, 
        AllowMethods: []string{"GET", "POST", "PUT", "DELETE", "OPTIONS"},
        AllowHeaders: []string{"Access-Control-Allow-Origin", "Origin", "Content-Type", "Authorization"},
        AllowCredentials: true,
    } 

    router := gin.Default()
    router.Use(cors.New(corsConfig))
    authRoutes := router.Group("/auth")
    // login route
    authRoutes.POST("/login", controller.Login)
    router.StaticFS("/static", http.Dir("./frontend/build/static"))
    router.StaticFile("/", "./frontend/build/index.html")
    router.Run(":8000")

我的前端 API 调用如下所示:

        const response = await fetch(`${process.env.REACT_APP_API_AUTH_URL}/login`, {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            //credentials: 'include',
            body: JSON.stringify({
                email,
                password
            })
        });

当我在浏览器的 Web 开发人员工具中检查选项调用的标头时,源与我的域匹配,也是 https。将域添加到 AllowOrigins 还不够吗?我需要通配符证书吗?

reactjs 获取 api 去杜松子酒

评论

0赞 Ferdy 11/15/2023
您的第一条引用的消息指出“原因:CORS 请求未成功”,但您声称 OPTIONS 请求已成功?请共享整个请求和响应标头。

答: 暂无答案