2014-05-17 13 views
77

Tôi phải xác nhận giá trị tiêu đề Content-Type trước khi chuyển nó đến yêu cầu HTTP.Tất cả các giá trị có thể có cho tiêu đề "Loại nội dung" HTTP là gì?

Có danh sách cụ thể cho tất cả các giá trị có thể có của Content-Type không?

Nếu không, có cách nào để xác thực loại nội dung trước khi sử dụng trong yêu cầu HTTP không?

+5

hợp lệ phương tiện truyền thông các loại có nghĩa vụ phải được đăng ký với IANA - bạn có thể thấy một danh sách hiện tại đây: http: //www.iana.org/assignments/media-types/media-types.xhtml nhưng lưu ý danh sách này có thể cập nhật theo thời gian. Không có danh sách được phép cố định. – Joe

Trả lời

30

Như is defined trong RFC 1341:

Trong BNF ký hiệu mở rộng của RFC 822, một lĩnh vực tiêu đề giá trị Content-Type được định nghĩa như sau:

Content-Type: = gõ "/" loại phụ * [";" tham số]

loại: = "ứng dụng"/"âm thanh" /"image"/"thông báo" /"multipart"/"text" /"video"/x-thẻ

x-thẻ : = < hai nhân vật "X" theo sau, không có can thiệp không gian màu trắng, bởi bất kỳ dấu hiệu>

kiểu phụ: = thẻ

tham số: = thuộc tính "=" giá trị

thuộc tính: = thẻ

giá trị: = thẻ/quoted-string

mã thông báo: = 1 *

tspecials: = "("/")"/"<"/">"/"@"; Phải ở trong /","/";"/":"/"\"/< ">; quoted-string, /"/"/" ["/"] "/"? "/". "; Để sử dụng trong vòng /" = "; giá trị tham số

a list of known MIME types rằng có thể làm theo nó (hoặc, như Joe nhận xét, the IANA source).

như bạn có thể nhìn thấy danh sách là cách quá lớn để bạn có thể xác nhận đối với tất cả chúng. những gì bạn có thể làm là xác nhận đối với định dạng chung và thuộc tính type để đảm bảo rằng đúng (tập hợp các tùy chọn nhỏ) và giả định rằng những gì tuân theo là đúng (và dĩ nhiên bắt bất kỳ ngoại lệ nào bạn có thể gặp phải khi bạn sử dụng nó)

Cũng lưu ý những nhận xét trên:

Nếu một loại chính là để được sử dụng cho bất cứ lý do, nó phải được đặt một cái tên bắt đầu bằng "X" để chỉ tình trạng phi tiêu chuẩn của nó và để tránh bất kỳ xung đột tiềm năng nào với tên chính thức trong tương lai.

Bạn sẽ nhận thấy rằng rất nhiều yêu cầu HTTP/phản ứng bao gồm một tiêu đề X- của một số loại mà là tự xác định, ghi nhớ điều này khi chứng thực các loại.

+0

RFC 1341 không liên quan đến HTTP. –

+2

RFC 1341 mô tả tiêu đề Loại nội dung được sử dụng trong HTTP. Làm thế nào chính xác bạn sẽ nói rằng họ không liên quan? –

+2

Nó đã bị lỗi thời và được thay thế bằng các tài liệu mới hơn nhiều lần. Những gì có liên quan là những gì (cộng với các tài liệu tham chiếu) phải nói. –

0

Nếu bạn đang sử dụng jaxrs hoặc bất kỳ khác, sau đó sẽ có một lớp gọi là mediatype.User interceptor trước khi gửi yêu cầu và so sánh nó với điều này.

1

Tôi sẽ nhắm đến việc bao gồm một tập hợp con các giá trị "Loại nội dung" có thể có, câu hỏi của bạn dường như tập trung vào việc xác định các loại nội dung đã biết.

@Jeroen RFC 1341 tham chiếu là rất tốt, nhưng đối với danh sách khá đầy đủ, IANA giữ trang web của các loại phương tiện đã đăng ký chính thức here.

+0

Đó không phải là các loại trung gian "đã biết" (ví dụ: các mẫu về những gì đã được quan sát thấy "trong tự nhiên") nhưng các loại trung gian đã trải qua các thủ tục đăng ký IANA. Do đó, chúng được đăng ký chính thức. Tìm thấy nó quan trọng để chỉ ra điều này :) – DaSourcerer

39

Các Content-Type tiêu đề trong một yêu cầu HTTP hoặc phản ứng mô tả nội dung

kiểu cho nội dung thư. Tiêu đề Chấp nhận tiêu đề trong yêu cầu cho máy chủ biết

loại nội dung mà khách hàng đang mong đợi trong nội dung phản hồi. Các loại nội dung là

được trình bày bằng loại phương tiện Internet. Loại phương tiện Internet (còn được gọi là

loại MIME) cho biết loại dữ liệu chứa tệp. Dưới đây là ví dụ:

     Content-Type: text/html 

Tiêu đề này cho biết nội dung cơ thể được trình bày ở định dạng html. Định dạng

các giá trị kiểu nội dung là một loại chính/kiểu phụ tiếp theo là một tùy chọn

dấu chấm phẩy cặp phân định thuộc tính-giá trị (được gọi là tham số).

Các loại phương tiện truyền thông Internet được phân loại vào nhóm sau trên cơ sở chính (hoặc ban đầu) Content-Type tiêu đề:

  • văn bản: Loại này chỉ ra rằng nội dung là văn bản thuần và không cần phần mềm đặc biệt để đọc nội dung. Loại phụ thể hiện chi tiết cụ thể hơn về nội dung, có thể được khách hàng sử dụng để xử lý đặc biệt, nếu có. Ví dụ: Loại nội dung:văn bản/html cho biết nội dung cơ thể là html và khách hàng có thể sử dụng gợi ý này để khởi động công cụ hiển thị trong khi hiển thị phản hồi.
  • multipart: Như tên cho biết, loại này bao gồm nhiều phần của các loại dữ liệu độc lập. Ví dụ: Loại nội dung:multipart/form-data được sử dụng để gửi biểu mẫu chứa các tệp, dữ liệu không phải ASCII và dữ liệu nhị phân.
  • thư: Loại này đóng gói nhiều thư hơn. Nó cho phép tin nhắn chứa các tin nhắn hoặc con trỏ khác tới các tin nhắn khác. Ví dụ: loại nội dung Loại Nội dung: /một phần cho phép thư lớn được chia nhỏ thành thư nhỏ hơn. Thông điệp đầy đủ sau đó có thể được đọc bởi khách hàng (tác nhân người dùng) bằng cách đặt tất cả các tin nhắn bị hỏng với nhau.
  • image: Loại này thể hiện dữ liệu hình ảnh. Ví dụ: Loại nội dung:hình ảnh/png cho biết nội dung nội dung là hình ảnh .png.
  • âm thanh: Loại này cho biết dữ liệu âm thanh. Ví dụ: Loại nội dung:âm thanh/mpeg cho biết nội dung nội dung là MP3 hoặc âm thanh MPEG khác.
  • video: Loại này cho biết dữ liệu video. Ví dụ: Loại nội dung:, video/mp4 cho biết nội dung nội dung là video MP4.
  • ứng dụng: Loại này thể hiện dữ liệu ứng dụng hoặc dữ liệu nhị phân. Ví dụ: Loại nội dung: application/json; charset = utf-8 chỉ định nội dung ở định dạng ký hiệu JavaScript (JSON), được mã hóa bằng mã hóa ký tự UTF-8.

Để tham khảo danh sách đầy đủ, hãy truy cập trang web của số hiệu Internet (IANA) tại Media Types

-4

Đặt mã này để nhận "loại nội dung" trong thời gian chạy:

vb. net:

dim ContentType = Web.MimeMapping.GetMimeMapping("c:\MyArchive.zip") 

Hoặc

dim ContentType = Web.MimeMapping.GetMimeMapping(".zip") 
4

bạn có thể tìm thấy tất cả các loại nội dung ở đây: http://www.iana.org/assignments/media-types/media-types.xhtml

nhưng loại phổ biến nhất là:

  1. Loại ứng dụng

    application/EDI-X12
    application/EDIFACT
    ứng dụng/javascript
    ứng dụng/octet-stream
    application/ogg
    application/pdf
    application/xhtml + xml
    application/x-shockwave-flash
    application/json
    application/ld + json
    application/xml
    application/zip

  2. Loại âm thanh

    audio/mpeg
    audio/x-ms-wma
    âm thanh/vnd.rn-RealAudio
    audio/x-wav

  3. Loại hình

    image/gif
    image/jpeg
    image/png
    image/tiff
    image/vnd.microsoft.icon
    hình ảnh/x-icon
    hình ảnh/vnd.djvu
    hình ảnh/svg + xml

  4. Loại nhiều phần dữ liệu

    multipart/mixed
    multipart/alternative
    multipart/liên quan (sử dụng bởi MHTML (HTML mail).)

  5. Loại văn bản

    text/css
    text/csv
    văn bản/html
    văn bản/javascript (lỗi thời)
    văn bản/đồng bằng
    text/xml

  6. Loại hình

    video/mpeg
    video/mp4
    video/quicktime
    video/x-ms-wmv
    video/x-msvideo
    video/x- flv
    video/webm

  7. Loại vnd:

    application/vnd.oasis.opendocument.text
    application/vnd.oasis.opendocument.spreadsheet
    application/vnd.oasis.opendocument.presentation
    application/vnd.oasis.opendocument.graphics
    application/vnd. ms-excel
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    application/vnd.ms-powerpoint
    application/vnd.openxmlformats-officedocument.presentationml.presentation
    application/msword
    VI ứNG DỤNG n/vnd.openxmlformats-officedocument.wordprocessingml.document
    application/vnd.mozilla.xul + xml

Các vấn đề liên quan