Total Lines | 28 |
Duplicated Lines | 0 % |
Coverage | 100% |
Changes | 0 |
1 | package middleware |
||
2 | |||
3 | import "net/http" |
||
4 | |||
5 | type corsHandler struct { |
||
6 | nextHandler http.Handler |
||
7 | } |
||
8 | |||
9 | func CORSHandler(nextHandler http.Handler) http.Handler { |
||
10 | 1 | return &corsHandler{nextHandler} |
|
11 | } |
||
12 | |||
13 | func (handler *corsHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) { |
||
14 | 1 | if origin := request.Header.Get("Origin"); origin != "" { |
|
15 | 1 | writer.Header().Set("Access-Control-Allow-Origin", origin) |
|
16 | |||
17 | 1 | corsMethods := request.Header.Get("Access-Control-Request-Method") |
|
18 | 1 | if corsMethods == "" { |
|
19 | 1 | corsMethods = "GET,POST,PUT,DELETE" |
|
20 | } |
||
21 | 1 | writer.Header().Set("Access-Control-Allow-Methods", corsMethods) |
|
22 | |||
23 | 1 | if corsHeaders := request.Header.Get("Access-Control-Request-Headers"); corsHeaders != "" { |
|
24 | 1 | writer.Header().Set("Access-Control-Allow-Headers", corsHeaders) |
|
25 | } |
||
26 | } |
||
27 | |||
28 | 1 | handler.nextHandler.ServeHTTP(writer, request) |
|
29 | } |
||
30 |