Có nhất thiết phải chỉ định loại nội dung trong tiêu đề phản hồi http không?


8

Ngoại trừ tài liệu html, hiện tại tất cả các tệp (css, javascript và hình ảnh) được cung cấp từ máy chủ web của tôi không chỉ định content-typetiêu đề phản hồi http. Tôi tình cờ nhận thấy điều này khi tôi định loại bỏ typethuộc tính trong cả scriptthẻ và linkthẻ của mình, nhưng đã gặp câu trả lời này có nội dung như sau:

Loại MIME cũng được gửi qua tiêu đề Kiểu nội dung HTTP, do đó, sử dụng loại = "text / css" sẽ chỉ là các byte bổ sung.


2
Tôi tin rằng bạn cần chỉ định Kiểu nội dung cho các tập lệnh để thực thi trong IE. Điều này là để ngăn chặn người dùng độc hại tải tập lệnh lên các trang web chia sẻ hình ảnh.
Brendon

@Brendon, cảm ơn vì đã chỉ ra hàm ý bảo mật. Có bất kỳ khía cạnh nào khác đáng chú ý, bảo mật-khôn ngoan, giả sử không có người dùng tải lên nội dung?
Câu hỏi tràn

1
Bạn có chắc chắn máy chủ của bạn không gửi Content-Typetiêu đề cho các tệp này? Nếu bạn đang xem phản hồi từ các tệp được cung cấp từ bộ đệm của trình duyệt thì có thể bạn sẽ không thấy Content-Typetiêu đề.
MrWhite

Hầu hết các máy chủ sẽ gửi các loại mime chính xác theo mặc định, vì vậy trừ khi bạn rõ ràng đặt máy chủ của mình không gửi nó, tôi cá là các tệp đang được gửi với loại mime chính xác.
DisgruntledGoat

1
@ w3d, cảm ơn bình luận của bạn. Tôi nhận ra sau khi kiểm tra lại rằng những gì tôi đang đọc thực sự là từ tiêu đề yêu cầu của một 304 not modifiedtệp. Không chính xác bộ đệm, nhưng loại nội dung được loại bỏ khỏi tiêu đề. Vô hiệu hóa bộ đệm, mọi thứ lại xuất hiện bình thường.
Câu hỏi tràn

Câu trả lời:


7

. Theo giao thức HTTP, điều khoản 7.2.1 :

Bất kỳ thông điệp HTTP / 1.1 nào có chứa phần thân thực thể NÊN bao gồm trường tiêu đề Kiểu nội dung xác định loại phương tiện của phần thân đó. Nếu và chỉ khi loại phương tiện không được cung cấp bởi trường Loại nội dung, người nhận CÓ THỂ cố gắng đoán loại phương tiện thông qua kiểm tra nội dung của nó và / hoặc phần mở rộng tên của URI được sử dụng để xác định tài nguyên.

Vì vậy, có, các tiêu đề phản hồi nên chứa Content-Typetiêu đề cho bất kỳ dữ liệu phản hồi nào (được gọi là cơ thể thực thể-cơ bản trong giao thức, thường là tập tin ED bằng ngôn ngữ chung). Nếu nó bị bỏ qua, trình duyệt được phép đưa ra những phỏng đoán hoang dã về loại dữ liệu mà nó có được. Trong nhiều bối cảnh, nguy cơ đoán sai là không đáng kể, nhưng đây không phải là một lý do tốt để vi phạm giao thức.

Các thuộc tính thích type=text/csstype=text/javascriptkhông cần thiết, ngoại trừ một số thông số kỹ thuật chính thức hoặc thậm chí hữu ích. Ngay cả khi một máy chủ gửi không chính xác ví dụ như dữ liệu CSS mà không có Content-Type, các trình duyệt sẽ coi dữ liệu là CSS nếu đó <link rel=stylesheet ...>là yếu tố gây ra yêu cầu. Đó là relthuộc tính quan trọng trong trường hợp đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.