ฉันต้องตรวจสอบContent-Type
ค่าส่วนหัวก่อนส่งผ่านไปยังคำขอ HTTP
มีรายการเฉพาะสำหรับค่าที่เป็นไปได้ทั้งหมดContent-Type
หรือไม่
มิฉะนั้นมีวิธีการตรวจสอบประเภทเนื้อหาก่อนที่จะใช้ในการร้องขอ HTTP?
ฉันต้องตรวจสอบContent-Type
ค่าส่วนหัวก่อนส่งผ่านไปยังคำขอ HTTP
มีรายการเฉพาะสำหรับค่าที่เป็นไปได้ทั้งหมดContent-Type
หรือไม่
มิฉะนั้นมีวิธีการตรวจสอบประเภทเนื้อหาก่อนที่จะใช้ในการร้องขอ HTTP?
คำตอบ:
คุณสามารถค้นหาเนื้อหาทุกประเภทได้ที่นี่: http://www.iana.org/assignments/media-types/media-types.xhtml
ประเภทที่พบมากที่สุดคือ:
พิมพ์แอปพลิเคชัน
application/java-archive
application/EDI-X12
application/EDIFACT
application/javascript
application/octet-stream
application/ogg
application/pdf
application/xhtml+xml
application/x-shockwave-flash
application/json
application/ld+json
application/xml
application/zip
application/x-www-form-urlencoded
พิมพ์เสียง
audio/mpeg
audio/x-ms-wma
audio/vnd.rn-realaudio
audio/x-wav
พิมพ์ภาพ
image/gif
image/jpeg
image/png
image/tiff
image/vnd.microsoft.icon
image/x-icon
image/vnd.djvu
image/svg+xml
พิมพ์ multipart
multipart/mixed
multipart/alternative
multipart/related (using by MHTML (HTML mail).)
multipart/form-data
พิมพ์ข้อความ
text/css
text/csv
text/html
text/javascript (obsolete)
text/plain
text/xml
พิมพ์วิดีโอ
video/mpeg
video/mp4
video/quicktime
video/x-ms-wmv
video/x-msvideo
video/x-flv
video/webm
พิมพ์ vnd:
application/vnd.android.package-archive
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
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.mozilla.xul+xml
ในสัญลักษณ BNF แบบขยายของ RFC 822 จะมีการกำหนดค่าฟิลด์ส่วนหัวเนื้อหาประเภทดังนี้
เนื้อหาประเภท: = ประเภท "/" ประเภทย่อย * [";" พารามิเตอร์]
ประเภท: = "แอปพลิเคชัน" / "เสียง" / "ภาพ" / "ข้อความ" / "หลายส่วน" / "ข้อความ" / "วิดีโอ" / x-token
x-token: = <อักขระสองตัว "X-" ตามมาโดยไม่มีการเว้นวรรคสีขาวโดยโทเค็นใด ๆ >
ชนิดย่อย: = โทเค็น
พารามิเตอร์: = attribute "=" ค่า
คุณลักษณะ: = โทเค็น
ค่า: = โทเค็น / สตริงที่ยกมา
โทเค็น: = 1 *
tspecials: = "(" / ")" / "<" / ">" / "@"; ต้องอยู่ใน / "," / ";" / ":" / "\" / <">; ที่ยกมาสตริง, /" / "/" ["/"] "/"? "/". "; เพื่อใช้ภายใน /" = "; ค่าพารามิเตอร์
และรายการประเภท MIME ที่รู้จักที่สามารถติดตามได้ (หรือตามที่โจพูดแหล่งที่มาของ IANA )
ในขณะที่คุณสามารถดูรายการมีขนาดใหญ่เกินไปสำหรับคุณที่จะตรวจสอบกับพวกเขาทั้งหมด สิ่งที่คุณสามารถทำได้คือตรวจสอบความถูกต้องของรูปแบบทั่วไปและtype
แอตทริบิวต์เพื่อให้แน่ใจว่าถูกต้อง (ชุดตัวเลือกมีขนาดเล็ก) และเพียงแค่คิดว่าสิ่งที่ตามมานั้นถูกต้อง (และแน่นอนว่ามีข้อยกเว้นใด ๆ เพื่อการใช้งานจริง)
บันทึกความคิดเห็นด้านบนด้วย:
หากประเภทหลักอื่นจะใช้ด้วยเหตุผลใดก็ตามจะต้องได้รับชื่อที่ขึ้นต้นด้วย "X-" เพื่อระบุสถานะที่ไม่ได้มาตรฐานและเพื่อหลีกเลี่ยงความขัดแย้งที่อาจเกิดขึ้นกับชื่ออย่างเป็นทางการในอนาคต
คุณจะสังเกตเห็นว่าคำขอ / การตอบกลับ HTTPจำนวนมากมีX-
ส่วนหัวของการเรียงลำดับบางอย่างที่กำหนดด้วยตนเองโปรดระลึกไว้เสมอเมื่อทำการตรวจสอบประเภท
ฉันจะตั้งเป้าหมายที่จะครอบคลุมค่า "ประเภทเนื้อหา" ที่เป็นไปได้คำถามที่คุณดูเหมือนจะเน้นไปที่การระบุประเภทเนื้อหาที่รู้จัก
@Jeroen RFC 1341 อ้างอิงเป็นสิ่งที่ดี แต่สำหรับรายการครบถ้วนสมบูรณ์ธรรม IANA ช่วยให้หน้าเว็บจดทะเบียนอย่างเป็นทางการประเภทสื่อที่นี่
หากคุณใช้ jaxrs หรืออื่น ๆ จะมีคลาสที่เรียกว่า mediatype ผู้ใช้ interceptor ก่อนที่จะส่งคำขอและเปรียบเทียบกับสิ่งนี้