Về lý thuyết, theo RFC 4329 , application/javascript.
Lý do được cho applicationlà không liên quan gì đến việc loại này có thể đọc được hay thực thi được. Đó là bởi vì có các cơ chế xác định bộ ký tự tùy chỉnh được đặt bởi chính ngôn ngữ / loại, thay vì chỉ là charsettham số chung . Một kiểu con textnên có khả năng được chuyển mã bởi một proxy sang một bộ ký tự khác, thay đổi tham số bộ ký tự. Điều này không đúng với JavaScript vì:
a. RFC nói rằng các tác nhân người dùng nên thực hiện việc đánh hơi BOM trên tập lệnh để xác định loại (tôi không chắc liệu có trình duyệt nào thực sự làm điều này không);
b. các trình duyệt sử dụng thông tin khác, mã hóa bao gồm cả mã hóa của trang và trong một số trình duyệt, script charsetthuộc tính này để xác định bộ ký tự. Vì vậy, bất kỳ proxy nào đã cố gắng chuyển mã tài nguyên sẽ phá vỡ người dùng của nó. (Tất nhiên trong thực tế không ai từng sử dụng proxy chuyển mã, nhưng đó là ý định.)
Do đó, các byte chính xác của tệp phải được bảo toàn chính xác , làm cho nó trở thành applicationloại nhị phân và không dựa trên ký tự kỹ thuật text.
Vì lý do tương tự, application/xmlđược chính thức ưu tiên hơn text/xml: XML có các cơ chế báo hiệu bộ ký tự trong dải riêng. Và mọi người cũng bỏ qua applicationcho XML.
text/javascriptvà text/xmlcó thể không phải là Quyền chính thức, nhưng có những thứ mà mọi người sử dụng ngày nay vì lý do tương thích, và lý do tại sao chúng không phải là điều đúng đắn thực tế đang nói hoàn toàn không quan trọng.