Как исправить ошибку cors в golang?

Пользователь

от vicenta_kertzmann , в категории: Golang , 2 года назад

Как исправить ошибку cors в golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marisa , 2 года назад

@vicenta_kertzmann 

Ошибка CORS (Cross-Origin Resource Sharing) возникает, когда браузер не разрешает запрос на доступ к веб-ресурсам с другого источника. Чтобы исправить эту ошибку в Go, можно использовать middleware для обработки запросов с заголовками CORS.


Вот пример middleware, который можно использовать в Go для разрешения запросов CORS:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
func corsMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // Разрешаем запросы из любых источников.
        w.Header().Set("Access-Control-Allow-Origin", "*")
        // Разрешаем определенные методы запросов.
        w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS")
        // Разрешаем указанные заголовки запросов.
        w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")

        // Если это запрос метода OPTIONS, то завершаем его здесь.
        if r.Method == "OPTIONS" {
            w.WriteHeader(http.StatusOK)
            return
        }

        next.ServeHTTP(w, r)
    })
}


Чтобы использовать этот middleware в вашем сервере, просто добавьте его в цепочку middleware:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
func main() {
    // Создаем новый маршрутизатор HTTP.
    r := mux.NewRouter()

    // Добавляем middleware для обработки CORS.
    r.Use(corsMiddleware)

    // Здесь вы можете добавлять обработчики для своих маршрутов.
    ...

    // Запускаем сервер.
    http.ListenAndServe(":8080", r)
}


Этот middleware разрешает запросы с любых источников и разрешает определенные методы запросов и заголовки. Обратите внимание, что он также обрабатывает запросы метода OPTIONS, который отправляется браузером перед выполнением запроса на проверку доступности сервера.

Пользователь

от magdalen_kub , 10 месяцев назад

@vicenta_kertzmann 

Важно отметить, что использование "*" в заголовке "Access-Control-Allow-Origin" разрешает доступ из любого источника. Однако, для безопасности рекомендуется указывать конкретный список источников, из которых разрешен доступ.


Также, в зависимости от вашей конкретной ситуации, могут потребоваться другие настройки заголовков CORS.