Как указать cors-заголовки для http.fileserver?

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

от karen.wisozk , в категории: Другие , 4 месяца назад

Как указать cors-заголовки для http.fileserver?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от ransom_homenick , 4 месяца назад

@karen.wisozk 

В Go можно указать cors-заголовки для http.fileserver, используя http.HandlerFunc в качестве обработчика и добавляя необходимые заголовки.


Вот пример, показывающий, как добавить cors-заголовки к http.fileserver:

 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
29
package main

import (
	"net/http"
)

func main() {
	// Создаем обработчик, который будет добавлять cors-заголовки
	corsHandler := func(h http.Handler) http.Handler {
		return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
			// Добавляем заголовки Access-Control-Allow-Origin и другие необходимые заголовки
			w.Header().Set("Access-Control-Allow-Origin", "*")
			w.Header().Set("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS")
			w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")

			// Пропускаем запрос к следующему обработчику
			h.ServeHTTP(w, r)
		})
	}

	// Создаем обработчик для статических файлов
	fs := http.FileServer(http.Dir("path/to/files"))

	// Строим цепочку обработчиков
	handler := corsHandler(fs)

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


В этом примере создается обработчик corsHandler, который добавляет cors-заголовки. Затем создается обработчик fs для статических файлов с использованием http.FileServer. Затем corsHandler применяется ко всем запросам, используя http.Handler, и создается окончательный обработчик handler. Наконец, сервер начинает прослушивание на порту 8000 с использованием http.ListenAndServe и передает ему окончательный обработчик.