소스 검색

lib/assets: MIME types, time formats (#8351)

.eot and .woff2 weren't listed, but are present in vendored fontawesome.

.ttf and .woff are font/* according to IANA,
https://www.iana.org/assignments/media-types/media-types.xhtml#font.
This matches what mime.TypeByExtension returns.

.eot is from https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types.
mime.TypeByExtension doesn't recognize this extension.

* lib/assets: Use http.ParseTime

This understands the three time formats allowed in HTTP.
greatroar 3 년 전
부모
커밋
2ca8a5ac61
1개의 변경된 파일9개의 추가작업 그리고 5개의 파일을 삭제
  1. 9 5
      lib/assets/assets.go

+ 9 - 5
lib/assets/assets.go

@@ -44,7 +44,7 @@ func Serve(w http.ResponseWriter, r *http.Request, asset Asset) {
 	header.Set("ETag", etag)
 	header.Set("Last-Modified", asset.Modified.Format(http.TimeFormat))
 
-	t, err := time.Parse(http.TimeFormat, r.Header.Get("If-Modified-Since"))
+	t, err := http.ParseTime(r.Header.Get("If-Modified-Since"))
 	if err == nil && !asset.Modified.After(t) {
 		w.WriteHeader(http.StatusNotModified)
 		return
@@ -86,18 +86,22 @@ func MimeTypeForFile(file string) string {
 		return "text/html; charset=utf-8"
 	case ".css":
 		return "text/css; charset=utf-8"
+	case ".eot":
+		return "application/vnd.ms-fontobject"
 	case ".js":
 		return "application/javascript; charset=utf-8"
 	case ".json":
 		return "application/json; charset=utf-8"
 	case ".png":
 		return "image/png"
-	case ".ttf":
-		return "application/x-font-ttf"
-	case ".woff":
-		return "application/x-font-woff"
 	case ".svg":
 		return "image/svg+xml; charset=utf-8"
+	case ".ttf":
+		return "font/ttf"
+	case ".woff":
+		return "font/woff"
+	case ".woff2":
+		return "font/woff2"
 	default:
 		return mime.TypeByExtension(ext)
 	}