Config: Allow CORS for additional file types when using a CDN #3931
Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
parent
3946e2a16f
commit
127b30dd31
2 changed files with 15 additions and 2 deletions
|
@ -12,7 +12,7 @@ import (
|
||||||
// Static is a middleware that adds static content-related headers to the server's response.
|
// Static is a middleware that adds static content-related headers to the server's response.
|
||||||
var Static = func(conf *config.Config) gin.HandlerFunc {
|
var Static = func(conf *config.Config) gin.HandlerFunc {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
// Allow CORS based on the configuration and automatically for eot, ttf, woff, woff2 and css files with a CDN.
|
// Allow CORS based on the configuration or otherwise automatically for certain file types when using a CDN.
|
||||||
// See: https://www.w3.org/TR/css-fonts-3/#font-fetching-requirements
|
// See: https://www.w3.org/TR/css-fonts-3/#font-fetching-requirements
|
||||||
if origin := conf.CORSOrigin(); origin != "" || header.AllowCORS(c.Request.URL.Path) && conf.UseCdn() {
|
if origin := conf.CORSOrigin(); origin != "" || header.AllowCORS(c.Request.URL.Path) && conf.UseCdn() {
|
||||||
if origin == "" {
|
if origin == "" {
|
||||||
|
|
|
@ -21,9 +21,22 @@ var (
|
||||||
CorsMethods = []string{http.MethodGet, http.MethodHead, http.MethodOptions}
|
CorsMethods = []string{http.MethodGet, http.MethodHead, http.MethodOptions}
|
||||||
DefaultAccessControlAllowMethods = strings.Join(CorsMethods, ", ")
|
DefaultAccessControlAllowMethods = strings.Join(CorsMethods, ", ")
|
||||||
DefaultAccessControlMaxAge = "3600"
|
DefaultAccessControlMaxAge = "3600"
|
||||||
CorsExt = map[string]bool{".eot": true, ".ttf": true, ".woff": true, ".woff2": true, ".css": true}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// CorsExt contains all static asset extensions for which a CORS header may be added automatically.
|
||||||
|
var CorsExt = map[string]bool{
|
||||||
|
".ttf": true,
|
||||||
|
".ttc": true,
|
||||||
|
".otf": true,
|
||||||
|
".eot": true,
|
||||||
|
".woff": true,
|
||||||
|
".woff2": true,
|
||||||
|
".css": true,
|
||||||
|
".js": true, // Required for the MapLibre GL RTL text plugin.
|
||||||
|
".json": true, // Required for static frontend configuration files.
|
||||||
|
".svg": true, // Required for SVG icons that depend on additional styles or fonts.
|
||||||
|
}
|
||||||
|
|
||||||
// AllowCORS checks if CORS headers can be safely used based on a request's file path.
|
// AllowCORS checks if CORS headers can be safely used based on a request's file path.
|
||||||
// See: https://www.w3.org/TR/css-fonts-3/#font-fetching-requirements
|
// See: https://www.w3.org/TR/css-fonts-3/#font-fetching-requirements
|
||||||
func AllowCORS(path string) bool {
|
func AllowCORS(path string) bool {
|
||||||
|
|
Loading…
Reference in a new issue