[PATCH 1 of 2] MIME: updated type for js files to text/javascript

Maxim Dounin mdounin at mdounin.ru
Thu Aug 29 02:20:00 UTC 2024


# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1724897092 -10800
#      Thu Aug 29 05:04:52 2024 +0300
# Node ID b5c5efc97ed0ad41be39018cbabe9abc31cb164d
# Parent  1729a20708cff738afa5cc32e77b2b50a4b5d91d
MIME: updated type for js files to text/javascript.

RFC 9239 changed recommended media type to text/javascript, and made
application/javascript deprecated.

According to httparchive.org data, as of 2023-01-01 javascript files
are returned with the following types (type, total pages using the type,
total requests with the type):

application/javascript,11686643,218376911
text/javascript,9623206,76111177
application/x-javascript,4874976,28554156

The same data as of 2024-01-01:

application/javascript,10563307,205156998
text/javascript,8429652,78523734
application/x-javascript,4197414,26277166

And as of 2024-08-01:

application/javascript,10945376,216622264
text/javascript,8802358,102680806
application/x-javascript,4278134,28726895

This corresponds to text/javascript being used in 23.5%, 25.3%, and
29.5% of responses.  That is, it is slowly gaining popularity.  Still,
application/javascript remains more popular for now.

With this change, js files are now returned with the text/javascript
type.  Similarly, autoindex in jsonp format now also uses text/javascript.

Additionally, text/javascript is added to the default charset_types list
of the charset module.  Since application/javascript is still more popular
than text/javascript, application/javascript is also preserved in the
default list for now.

diff --git a/conf/mime.types b/conf/mime.types
--- a/conf/mime.types
+++ b/conf/mime.types
@@ -2,10 +2,10 @@
 types {
     text/html                                        html htm shtml;
     text/css                                         css;
+    text/javascript                                  js;
     text/xml                                         xml;
     image/gif                                        gif;
     image/jpeg                                       jpeg jpg;
-    application/javascript                           js;
     application/atom+xml                             atom;
     application/rss+xml                              rss;
 
diff --git a/src/http/modules/ngx_http_autoindex_module.c b/src/http/modules/ngx_http_autoindex_module.c
--- a/src/http/modules/ngx_http_autoindex_module.c
+++ b/src/http/modules/ngx_http_autoindex_module.c
@@ -264,7 +264,7 @@ ngx_http_autoindex_handler(ngx_http_requ
         break;
 
     case NGX_HTTP_AUTOINDEX_JSONP:
-        ngx_str_set(&r->headers_out.content_type, "application/javascript");
+        ngx_str_set(&r->headers_out.content_type, "text/javascript");
         break;
 
     case NGX_HTTP_AUTOINDEX_XML:
diff --git a/src/http/modules/ngx_http_charset_filter_module.c b/src/http/modules/ngx_http_charset_filter_module.c
--- a/src/http/modules/ngx_http_charset_filter_module.c
+++ b/src/http/modules/ngx_http_charset_filter_module.c
@@ -126,6 +126,7 @@ static ngx_int_t ngx_http_charset_postco
 static ngx_str_t  ngx_http_charset_default_types[] = {
     ngx_string("text/html"),
     ngx_string("text/xml"),
+    ngx_string("text/javascript"),
     ngx_string("text/plain"),
     ngx_string("text/markdown"),
     ngx_string("text/vnd.wap.wml"),



More information about the nginx-devel mailing list