Ik moet de headerwaarde Content-Type
valideren voordat ik deze doorgeef aan een HTTP-verzoek.
Is er een specifieke lijst voor alle mogelijke waarden van Content-Type
?
Is er anders een manier om het inhoudstype te valideren voordat het in een HTTP-verzoek wordt gebruikt?
Antwoord 1, autoriteit 100%
Je kunt elk inhoudstype hier vinden:
http://www.iana.org/assignments/media-types/media -types.xhtml
De meest voorkomende soorten zijn:
-
Type aanvraag
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
-
Geluid typen
audio/mpeg audio/x-ms-wma audio/vnd.rn-realaudio audio/x-wav
-
Afbeelding typen
image/gif image/jpeg image/png image/tiff image/vnd.microsoft.icon image/x-icon image/vnd.djvu image/svg+xml
-
Type meerdelig
multipart/mixed multipart/alternative multipart/related (using by MHTML (HTML mail).) multipart/form-data
-
Tekst typen
text/css text/csv text/html text/javascript (obsolete) text/plain text/xml
-
Video typen
video/mpeg video/mp4 video/quicktime video/x-ms-wmv video/x-msvideo video/x-flv video/webm
-
Type 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
Antwoord 2, autoriteit 16%
Zoals is gedefinieerdin RFC 1341:
In de Extended BNF-notatie van RFC 822, een Content-Type header-veld
waarde wordt als volgt gedefinieerd:Inhoudstype := type “/” subtype *[“;” parameter]
type := “applicatie” / “audio”
/ “afbeelding” / “bericht”
/ “meerdelige” / “tekst”
/ “video” / x-tokenx-token := < De twee karakters “X-” volgden, zonder
tussenliggende witruimte, door een teken >subtype := token
parameter := attribuut “=” waarde
attribuut := token
waarde := token / tekenreeks tussen aanhalingstekens
token := 1*
tspecials := “(” / “)” / “<” / “>” / “@” ; Moet binnen zijn
/ “,” / “;” / “:” / “\” / <“> ; tekenreeks tussen aanhalingstekens,
/ “/” / “[” / “]” / “?” / “.” ; binnen gebruiken
/ “=” ; parameterwaarden
En een lijst met bekende MIME-typendie daarop kunnen volgen (of, zoals Joe opmerkt, de IANA-bron).
Zoals je kunt zien, is de lijst veel te groot om ze allemaal te valideren. Wat u kunt doen, is valideren tegen het algemene formaat en het kenmerk type
om er zeker van te zijn dat dit correct is (de set opties is klein) en gewoon aannemen dat wat erop volgt correct is (en natuurlijk eventuele uitzonderingen die u kunt tegenkomen wanneer u het daadwerkelijk gebruikt).
Let ook op de opmerking hierboven:
Als om welke reden dan ook een ander primair type moet worden gebruikt, moet het een naam krijgen die begint met “X-” om de niet-standaardstatus aan te geven en om elk mogelijk conflict met een toekomstige officiële naam te voorkomen.
U zult merken dat veel HTTP-verzoeken/-antwoordeneen of andere soort X-
-header bevatten die zelf gedefinieerd is, houd hier rekening mee bij het valideren van de typen .
Antwoord 3
Ik zou proberen een subset van mogelijke ‘Content-type’-waarden te behandelen, uw vraag lijkt zich te richten op het identificeren van bekende inhoudstypen.
@Jeroen RFC 1341-referentie is geweldig, maar voor een vrij uitputtende lijst houdt IANA zich aan
een webpagina met officieel geregistreerde mediatypen hier.
Antwoord 4
Als je jaxrs of iets anders gebruikt, zal er een klasse zijn genaamd mediatype.User interceptor voordat je het verzoek verzendt en vergelijk het hiermee.