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

Go:如何使用 gqlgen graphql 实现禁用 CORS?

Go:如何使用 gqlgen graphql 实现禁用 CORS?

Go
慕森王 2022-05-05 18:10:43
我使用gqlgen作为 GraphQL 服务器。我使用Apollo 客户端从前端应用程序连接到此服务器。如果我编译前端代码并将其作为 GraphQL 服务器的静态内容提供,那么一切正常。问题:在开发过程中,我在运行基于 Go 的 GraphQL API,http://localhost:8080并且在运行于http://localhost:3000. 这样我得到了CORS错误。我设法通过在创建客户端时指定选项来解决前端的问题no-cors,但后端仍然给我的请求提供 400s。问题:如何在基于 gqlgen 的 GraphQL API 中禁用 CORS?代码:config := gql.Config{Resolvers: &gql.Resolver{}}handler := handler.GraphQL(gql.NewExecutableSchema(config))http.Handle("/query", handler)http.ListenAndServe(":8080", nil)完整的服务器端代码可在 GitHub 上找到。我试过的:我遵循了无效的文档中的解决方案。我在 StackOverflow 上检查了几个解决方案,比如这个,但是它们提供了一个库特定的解决方案,这些解决方案不适合我。
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我认为如果您设置这个简单的中间件就足够了


func cors(h http.HandlerFunc) http.HandlerFunc {

    return func(w http.ResponseWriter, r *http.Request) {

        w.Header().Set("Access-Control-Allow-Origin", "*")

        w.Header().Set("Access-Control-Allow-Methods", "*")

        w.Header().Set("Access-Control-Allow-Headers", "*")

        h(w, r)

    }

}


...

http.Handle("/query", cors(handler))

...

另外,我认为在开发以外的环境中相应地调整它会很好。


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

添加回答

举报

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