gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:08:06 25 4
gpt4 key购买 nike

我正在使用gqlgen作为GraphQL服务器。我使用Apollo client从前端应用程序连接到此服务器。

如果我编译前端代码并将其作为GraphQL服务器的静态内容使用,则一切正常。

问题:

在开发过程中,我在http://localhost:8080上运行了基于Go的GraphQL API,并且在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)

完整的服务器端代码可在 on GitHub中获得。

我尝试过的:

我关注了 the solution from the documentation,该方法无效。我在StackOverflow上检查了几个解决方案,例如 this one,但是它们提供了特定于库的解决方案,在我看来,这些解决方案不行。

最佳答案

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

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))
...

另外,我认为最好在开发以外的环境中进行相应调整。

关于go - Go:如何使用gqlgen graphql实现禁用CORS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59830182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com