diff options
| author | jerebear12 <72420925+jerebear12@users.noreply.github.com> | 2022-09-27 13:47:52 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-27 11:47:52 -0700 |
| commit | 190afcc3fd12c0e524cd40775630ca022094241f (patch) | |
| tree | 5c14eb98dbacbf0d709ac8527abbb200e72ff0bb /weed | |
| parent | faa6167b6b706cbd38c78cf4c1f3b91ce60598f1 (diff) | |
| download | seaweedfs-190afcc3fd12c0e524cd40775630ca022094241f.tar.xz seaweedfs-190afcc3fd12c0e524cd40775630ca022094241f.zip | |
Allow CORS on Filer (#3750)
Adjusted filer response headers
Diffstat (limited to 'weed')
| -rw-r--r-- | weed/server/filer_server_handlers.go | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/weed/server/filer_server_handlers.go b/weed/server/filer_server_handlers.go index 153971f6e..454148e66 100644 --- a/weed/server/filer_server_handlers.go +++ b/weed/server/filer_server_handlers.go @@ -16,6 +16,15 @@ import ( func (fs *FilerServer) filerHandler(w http.ResponseWriter, r *http.Request) { start := time.Now() + + if r.Header.Get("Origin") != "" { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Expose-Headers", "*") + w.Header().Set("Access-Control-Allow-Headers", "*") + w.Header().Set("Access-Control-Allow-Credentials", "true") + w.Header().Set("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS") + } + if r.Method == "OPTIONS" { OptionsHandler(w, r, false) return @@ -45,10 +54,7 @@ func (fs *FilerServer) filerHandler(w http.ResponseWriter, r *http.Request) { }() w.Header().Set("Server", "SeaweedFS Filer "+util.VERSION) - if r.Header.Get("Origin") != "" { - w.Header().Set("Access-Control-Allow-Origin", "*") - w.Header().Set("Access-Control-Allow-Credentials", "true") - } + switch r.Method { case "GET": fs.GetOrHeadHandler(w, r) @@ -92,6 +98,13 @@ func (fs *FilerServer) filerHandler(w http.ResponseWriter, r *http.Request) { func (fs *FilerServer) readonlyFilerHandler(w http.ResponseWriter, r *http.Request) { start := time.Now() + + if r.Header.Get("Origin") != "" { + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Allow-Headers", "*") + w.Header().Set("Access-Control-Allow-Credentials", "true") + } + stats.FilerRequestCounter.WithLabelValues(r.Method).Inc() defer func() { stats.FilerRequestHistogram.WithLabelValues(r.Method).Observe(time.Since(start).Seconds()) @@ -108,10 +121,7 @@ func (fs *FilerServer) readonlyFilerHandler(w http.ResponseWriter, r *http.Reque } w.Header().Set("Server", "SeaweedFS Filer "+util.VERSION) - if r.Header.Get("Origin") != "" { - w.Header().Set("Access-Control-Allow-Origin", "*") - w.Header().Set("Access-Control-Allow-Credentials", "true") - } + switch r.Method { case "GET": fs.GetOrHeadHandler(w, r) @@ -122,11 +132,14 @@ func (fs *FilerServer) readonlyFilerHandler(w http.ResponseWriter, r *http.Reque func OptionsHandler(w http.ResponseWriter, r *http.Request, isReadOnly bool) { if isReadOnly { - w.Header().Add("Access-Control-Allow-Methods", "GET, OPTIONS") + w.Header().Set("Access-Control-Allow-Methods", "GET, OPTIONS") } else { - w.Header().Add("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS") + w.Header().Set("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS") + w.Header().Set("Access-Control-Expose-Headers", "*") } - w.Header().Add("Access-Control-Allow-Headers", "*") + w.Header().Set("Access-Control-Allow-Origin", "*") + w.Header().Set("Access-Control-Allow-Headers", "*") + w.Header().Set("Access-Control-Allow-Credentials", "true") } // maybeCheckJwtAuthorization returns true if access should be granted, false if it should be denied |
