В настоящее время я пишу спокойный веб-сервер, который я бы хотел протестировать из front-face. Поскольку сервер размещен в другом домене при разработке, мне нужен Access-Control-Allow-Origin: *
(я думаю). Я пытался добиться того, чтобы с помощью пакета горилл обработчиков, а именно следующее:Разрешение на использование обработчиков gorilla
origins := handlers.AllowedOrigins([]string{"*"})
log.Fatal(http.ListenAndServe(":"+os.Getenv(util.Port),
handlers.LoggingHandler(os.Stdout, handlers.CORS(origins)(router))))
Теперь при попытке обратиться к серверу, используя следующий завиток:
curl -H "Origin: http://example.com" \
-H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: X-Requested-Width" \
-X OPTIONS --verbose localhost:8000
я получаю OPTIONS запросить на сервере , который возвращает 403. Я также попытался добавить заголовки и разрешенные методы:
handlers.AllowedHeaders([]string{"X-Requested-With"})
handlers.AllowedMethods([]string{"GET", "POST", "PUT", "OPTIONS"})
но это не имело значения. Как я могу это решить?
Если вы не можете заставить его работать, ответ на http://stackoverflow.com/questions/12830095/setting-http-headers-in-golang/24818638 # 24818638, похоже, это способ обойти его – sideshowbarker
, к сожалению, это не сработает, так как я также использую маршрутизатор gorilla mux и устанавливаю методы функции, поэтому мне пришлось бы обернуть каждый маршрут индивидуально – tofiffe