[英]Go: How to disable CORS using gqlgen graphql implementation?
我使用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 上檢查了幾個解決方案,比如這個,但是它們提供了一個庫特定的解決方案,在我的情況下不適用。
我想如果你設置這個簡單的中間件應該就足夠了
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))
...
此外,我認為最好在開發以外的環境中進行相應的調整。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.