英文:
gqlgen CORS refusing connection from http://localhost:3000
问题
我正在尝试使用官方文档中的代码为我的gqlgen服务器添加CORS,但是当我尝试从http://localhost:3000连接到服务器时,连接被拒绝。
package main
import (
"log"
"net/http"
"os"
"github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/handler/transport"
"github.com/99designs/gqlgen/graphql/playground"
"github.com/go-chi/chi"
"github.com/gorilla/websocket"
"github.com/megajon/gqlgen-cors/graph"
"github.com/rs/cors"
)
const defaultPort = "8081"
func main() {
port := os.Getenv("PORT")
if port == "" {
port = defaultPort
}
router := chi.NewRouter()
// 在每个请求周围添加CORS中间件
// 有关完整选项列表,请参见https://github.com/rs/cors
router.Use(cors.New(cors.Options{
AllowedOrigins: []string{"http://localhost:3000"},
AllowCredentials: true,
Debug: true,
}).Handler)
srv := handler.NewDefaultServer(graph.NewExecutableSchema(graph.Config{Resolvers: &graph.Resolver{}}))
srv.AddTransport(&transport.Websocket{
Upgrader: websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
// 在这里检查您想要的域名
return r.Host == "example.org"
},
ReadBufferSize: 1024,
WriteBufferSize: 1024,
},
})
router.Handle("/", playground.Handler("GraphQL playground", "/query"))
router.Handle("/query", srv)
log.Printf("连接到 http://localhost:%s/ 查看GraphQL playground", port)
err := http.ListenAndServe(":"+port, router)
if err != nil {
panic(err)
}
}
这是你要翻译的内容。
英文:
I'm trying to add CORS to my gqlgen server using the code from the official docs, but when I try to connect to the server from http://localhost:3000 the connection is refused.
package main
import (
"log"
"net/http"
"os"
"github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/handler/transport"
"github.com/99designs/gqlgen/graphql/playground"
"github.com/go-chi/chi"
"github.com/gorilla/websocket"
"github.com/megajon/gqlgen-cors/graph"
"github.com/rs/cors"
)
const defaultPort = "8081"
func main() {
port := os.Getenv("PORT")
if port == "" {`your text`
port = defaultPort
}
router := chi.NewRouter()
// Add CORS middleware around every request
// See https://github.com/rs/cors for full option listing
router.Use(cors.New(cors.Options{
AllowedOrigins: []string{"http://localhost:3000"},
AllowCredentials: true,
Debug: true,
}).Handler)
srv := handler.NewDefaultServer(graph.NewExecutableSchema(graph.Config{Resolvers: &graph.Resolver{}}))
srv.AddTransport(&transport.Websocket{
Upgrader: websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
// Check against your desired domains here
return r.Host == "example.org"
},
ReadBufferSize: 1024,
WriteBufferSize: 1024,
},
})
router.Handle("/", playground.Handler("GraphQL playground", "/query"))
router.Handle("/query", srv)
log.Printf("connect to http://localhost:%s/ for GraphQL playground", port)
err := http.ListenAndServe(":"+port, router)
if err != nil {
panic(err)
}
}
答案1
得分: 1
原来问题不是CORS,而是gqlgen API运行在Windows Powershell上,而前端应用程序运行在wsl ubuntu终端上。这实际上是两个独立的网络。一旦我在相同的环境中运行两个应用程序,问题就解决了。
英文:
It turns out the issue wasn't CORS, but the fact that the gqlgen API was running from a Windows Powershell and the front end app was running from a wsl ubuntu terminal. Which is essentially two separate networks. Once I ran both apps in the same environment the problem was resolved.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论