Как реализовать динамическое обновление CORS?

Добрый день.

Имеется сервис, у которого есть эндпоинт на добавление callback URL'ов, они записываются в базу, и после, клиент (к примеру, JS) использует любой из хранящихся там URL для callback'ов.

Вопрос следующий: возможно ли в Golang, реализовать динамическое обновление настроек CORS? В данный момент использую пакет github.com/rs/cors. В моем примере, это нужно, при добавлении callback URL'ов, будет доставаться схема и хост из каждого URL, и добавляться в настройки CORS (AllowedOrigins)
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
yellow79
@yellow79
Senior Software Engineer
Заведите глобальную переменную var origins = make(map[string]struct{}). После записи ендпоинта в базу вычисляйте origin данного URL и добавляйте в глобальную переменную origins. Настройки объекта с КОРСами будут выглядеть как-то так
c := cors.New(cors.Options{
	AllowCredentials: true,
	AllowOriginRequestFunc: func(r *http.Request, origin string) bool {
		if _, ok := origins[r.Header.Get("Origin")]; !ok {
			return false
		}
		return true
	},
})


По хорошему надо бы ещё мьютексами закрыть чтение/запись, но с этим думаю должны справиться
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы