網站搜尋

HTTP 標頭 - application/x-javascript 與 text/javascript 內容類型的差異


這些標題之間有什麼區別?

Content-Type: application/javascript
Content-Type: application/x-javascript
Content-Type: text/javascript

哪一個最好,為什麼?

請不要說它們是相同的——如果它們是相同的,就不會有三個了。我知道兩者都可以使用——但我想知道它們的差別。

答案#1

JavaScript MIME 類型

在傳送 JavaScript 內容時,應依據 RFC 9239 使用 text/javascript。

別名

application/javascript、application/x-javascript、text/javascript1.0、text/javascript1.1、text/javascript1.2、text/javascript1.3、text/javascript1.4、text/javascript1.5、text/jscript 和 text/livescript 是它的已棄用別名。如果您正在撰寫一個使用 JavaScript 的工具(例如 HTTP 客戶端),那麼您應該考慮支援它們以保持向後相容性。

歷史

直到 RFC 4329 試圖用 application/javascript 取代它之前,出於慣例一直使用 text/javascript MIME 類型。

這只是一個修改,以便 text/* 和 application/* MIME 類型群組在可能的情況下具有一致的含義。(text/* MIME 類型是為了人類可讀內容而設計的,JavaScript 並非設計用來直接傳達給人類理解)。

業界大多忽略了該規範,因此目前的規範放棄了這一嘗試。

X- 前綴

此處提到的一些 MIME 類型使用了 x- 前綴。這用於表示尚未標準化的實驗性 MIME 類型。根據 RFC 6648,此慣例已被棄用。

HTML

雖然這個問題關於 HTTP,但值得一提的是 HTML 中相關的 type 屬性。

在載入傳統腳本時,我建議你完全省略 type 屬性。它沒有任何效果,但可能會因為拼寫錯誤而導致瀏覽器將其視為指向不被識別的腳本類型並忽略它。如果你確實提供了該屬性,那麼請使用 text/javascript,因為某些已過時的 MIME 類型將不被識別。

在載入 JavaScript 模組時,使用 type="module"(注意這個值不是 MIME 類型!)。

答案#2

以 x- 開頭的 MIME 類型尚未標準化。就 JavaScript 而言,它有點過時。此外,第二段程式碼片段

<?Header('Content-Type: text/javascript');?>

需要啟用 short_open_tags。你應該避免使用它。

<?php Header('Content-Type: text/javascript');?>

然而,JavaScript 的 完全正確的 MIME 類型是

application/javascript

http://www.iana.org/assignments/media-types/application/index.html

答案#3

截至2022年5月,text/javascript 再次成為首選類型(參見 RFC 9239)

此處的媒體類型註冊分為兩大類:(1) 唯一的媒體類型 "text/javascript",目前正在使用中;以及 (2) 所有已過時的媒體類型

和

所有註冊將以此文件作為參考。已移除過時的說明,即“text/javascript”媒體類型已“被廢止,取而代之為 application/javascript”。已移除過時的說明,即“text/ecmascript”媒體類型已“被廢止,取而代之為 application/ecmascript”。IANA 已向除了“text/javascript”之外的所有註冊添加了“已廢止,取而代之為 text/javascript”的說明;也就是說,此說明已被添加到“text/ecmascript”、“application/javascript”及“application/ecmascript”的註冊中。