Сейчас я пишу простой сервер на Go, используя стандартную библиотеку net / http. Сервер помещается в докер-контейнер и размещается в облачной форме Google. Но когда я хочу получить доступ к серверу из стороннего приложения React (расположенного на другом сервере), я всегда получаю сообщение об ошибке CORS.
Ища решения онлайн, я добавил библиотеку в свой код, которая предназначена для решения проблемы СORS. Но добавление библиотеки не помогло. Даже после его применения сервер не отправляет мне заголовки СORS. Какой код у меня сейчас?
package main
import (
controller "./controllers"
"./util"
"github.com/gorilla/mux"
"github.com/rs/cors"
"log"
"net/http"
//"os"
)
// Entry point
func main() {
c := cors.New(cors.Options{
AllowedOrigins: []string{"*"}, // All origins
AllowedMethods: []string{"GET"}, // Allowing only get, just an example
AllowedHeaders: []string{"Authorization", "Content-Type"},
AllowCredentials: true,
Debug: true,
})
r := mux.NewRouter()
// Router
// Live check
r.HandleFunc("/live", controller.LiveCheck)
apiRouter := r.PathPrefix("/api").Subrouter()
// Medication data
medicationRouter := apiRouter.PathPrefix("/medication").Subrouter()
medicationRouter.HandleFunc("", controller.MedicationHeadersList).Methods("GET")
medicationRouter.HandleFunc("/{id}", controller.MedicationChildrenList).Methods("GET")
medicationRouter.HandleFunc("/{id}/leafs", controller.MedicationLeafsList).Methods("GET")
medicationRouter.HandleFunc("/search/", controller.SearchMedicationList).Methods("GET")
medicationRouter.HandleFunc("/result/{id}", controller.MedicationSearchResult).Methods("GET")
//r.Use(util.CORS)
apiRouter.Use(util.VerifyToken)
log.Println(http.ListenAndServe(":8080", c.Handler(r)))
}
Вот ответ, который я получаю из верхней части консоли браузера:
Request Method: OPTIONS
Status Code: 200 OK
Remote Address: 35.190.37.37:80
Referrer Policy: no-referrer-when-downgrade
Content-Length: 0
Date: Mon, 10 Jun 2019 22:37:36 GMT
Vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headers
Via: 1.1 google
Я также попытался вручную установить заголовки CORS, создав промежуточное программное обеспечение, но это также не помогло.
Заранее спасибо за помощь!
UPD Спасибо всем за ответы и помощь. Все оказалось намного проще. Google не обновил мой докер-контейнер, поэтому все мои изменения в коде не дали желаемого эффекта. Мой код, который я дал в описании вопроса, отлично решает проблему CORS. Вопрос можно считать закрытым.