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

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

от ike_lowe , в категории: Общие вопросы , 5 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

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

от myah , 5 месяцев назад

@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, чтобы разрешить запросы с других источников.

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

от modesta , 5 месяцев назад

@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 вы можете прочитать в его документации.