@ike_lowe
Для исправления ошибки CORS (Cross-Origin Resource Sharing) в Go можно использовать пакет github.com/rs/cors.
Ниже приведен пример кода, который демонстрирует, как использовать этот пакет:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
package main import ( "log" "net/http" "github.com/rs/cors" ) func main() { // Создаем маршрут mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Привет, мир!")) }) // Создаем обработчик Cors corsHandler := cors.Default().Handler(mux) // Запускаем сервер с обработчиком Cors log.Fatal(http.ListenAndServe(":8080", corsHandler)) } |
В этом примере мы создаем новый сервер mux
и добавляем обработчик для маршрута /
. Затем мы создаем обработчик Cors с помощью cors.Default().Handler(mux)
, который позволяет запросам с других источников обращаться к серверу.
Наконец, мы запускаем сервер, слушая на порту 8080 с использованием http.ListenAndServe(":8080", corsHandler)
.
После запуска этого кода ваш сервер Go будет доступен по адресу http://localhost:8080
, и он будет устанавливать заголовки CORS, чтобы разрешить запросы с других источников.
@ike_lowe
В примере кода использовалась стандартная конфигурация пакета github.com/rs/cors. Однако, если у вас возникает ошибка CORS, можно настроить пакет с помощью дополнительных параметров.
Вот пример использования пакета с настройками:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package main import ( "log" "net/http" "github.com/rs/cors" ) func main() { // Создаем маршрут mux := http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Привет, мир!")) }) // Создаем настройки CORS corsOptions := cors.Options{ AllowedOrigins: []string{"http://example.com"}, // Разрешенный источник запросов AllowCredentials: true, // Разрешить передачу кредитенциалов (например, куки) } // Создаем обработчик Cors с настройками corsHandler := cors.New(corsOptions).Handler(mux) // Запускаем сервер с обработчиком Cors log.Fatal(http.ListenAndServe(":8080", corsHandler)) } |
В этом примере мы создаем объект cors.Options, в котором указываем разрешенные источники запросов и разрешаем передачу кредитенциалов. Затем передаем эти настройки в cors.New(corsOptions)
и получаем обработчик Cors с нужными параметрами.
После этого, мы запускаем сервер, который будет обрабатывать запросы с указанными настройками CORS.
Помимо указанных настроек, в Options
можно задать и другие параметры, такие как разрешенные заголовки (AllowedHeaders
), разрешенные методы (AllowedMethods
) и т.д. Подробнее о настройке пакета github.com/rs/cors
вы можете прочитать в его документации.