HTTP“Content-Type”헤더에 가능한 모든 값은 무엇입니까?


270

Content-TypeHTTP 요청에 전달하기 전에 헤더 값 을 확인해야합니다 .

가능한 모든 값에 대한 특정 목록이 Content-Type있습니까?

그렇지 않으면 HTTP 요청에서 콘텐츠 유형을 사용하기 전에 유효성을 검사하는 방법이 있습니까?


9
유효한 미디어 유형은 IANA에 등록되어 있어야합니다. iana.org/assignments/media-types/media-types.xhtml 에서 현재 목록을 볼 수 있지만이 목록은 시간이 지남에 따라 업데이트 될 수 있습니다. 고정 된 허용 목록이 없습니다.
Joe


@Joe : "유효한 미디어 유형은 IANA에 등록되어 있어야합니다."-사용자 정의 미디어 유형을 의미합니까 (사용자 정의 클라이언트 응용 프로그램에서만 호출 할 응용 프로그램 별 웹 API에서만 사용). 전혀 허용되지 않습니까?
또는 매퍼

1
@ORMapper 나는 "공식 목록이 있지만 야생에서 다른 많은 사람들을 보는 것에 놀라지 않을 것"으로 더 많이 읽었습니다. OP의 질문과 관련하여 "모든 유형"을 시도하고 유효성을 검사하려는 경우 최소한 등록 된 모든 유형의 유효성을 검사해야합니다. 추가 항목으로 할 일이 더 개방적입니다. 내가 아는 한 사용자 정의 유형을 등록 할 필요 는 없습니다 .
Joe

문제 해결에 가장 도움이 된 답변을 수락하십시오. 미래 독자들을 돕습니다. 답변이 도움이되지 않으면 아래에 의견을 남겨주십시오. 따라서 포스터는 그에 따라 업데이트 할 수 있습니다. 누군가 내 질문에 대답 할 때 어떻게해야합니까?를 읽으십시오 . 더 알고 싶어요
Roshana Pitigala

답변:


254

모든 컨텐츠 유형은 여기에서 찾을 수 있습니다. http://www.iana.org/assignments/media-types/media-types.xhtml

가장 일반적인 유형은 다음과 같습니다.

  1. 타입 응용

    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  
    
  2. 오디오 입력

    audio/mpeg   
    audio/x-ms-wma   
    audio/vnd.rn-realaudio   
    audio/x-wav   
    
  3. 타입 이미지

    image/gif   
    image/jpeg   
    image/png   
    image/tiff    
    image/vnd.microsoft.icon    
    image/x-icon   
    image/vnd.djvu   
    image/svg+xml    
    
  4. 멀티 파트 유형

    multipart/mixed    
    multipart/alternative   
    multipart/related (using by MHTML (HTML mail).)  
    multipart/form-data  
    
  5. 텍스트를 입력하십시오

    text/css    
    text/csv    
    text/html    
    text/javascript (obsolete)    
    text/plain    
    text/xml    
    
  6. 타입 비디오

    video/mpeg    
    video/mp4    
    video/quicktime    
    video/x-ms-wmv    
    video/x-msvideo    
    video/x-flv   
    video/webm   
    
  7. 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   
    

50

으로는 정의RFC 1341 :

RFC 822의 확장 BNF 표기법에서 Content-Type 헤더 필드 값은 다음과 같이 정의됩니다.

Content-Type : = 유형 "/"하위 유형 * [ ";" 파라미터]

type : = "application"/ "audio"/ "image"/ "message"/ "multipart"/ "text"/ "video"/ x-token

x-token : = <두 개의 문자 "X-"뒤에 공백이없고 토큰이 있습니다>

하위 유형 : = 토큰

매개 변수 : = 속성 "="값

속성 : = 토큰

값 : = 토큰 / 따옴표로 묶은 문자열

토큰 : = 1 *

tspecials : = "("/ ")"/ "<"/ ">"/ "@"; / ","/ ";"에 있어야합니다. / ":"/ "\"/ < ">; 인용 문자열, /"/ "/"[ "/"] "/"? "/". "; /"= "; 매개 변수 값 내에서 사용

그리고 그것을 따라갈 수있는 알려진 MIME 유형의 목록 (또는 Joe 가 IANA 소스로 언급 한대로 ).

보시다시피 목록이 너무 커서 모든 목록에 대해 유효성을 검사 할 수 없습니다. 당신이 할 수있는 일은 일반적인 형식과 type속성 에 대해 유효성을 검사하여 그것이 올바른지 확인하고 (옵션 세트가 작음) 그 뒤에 오는 것이 정확하다고 가정하십시오 (물론 그것을 넣을 때 발생할 수있는 예외를 잡아라) 실제 사용).

또한 위의 의견을 참고하십시오.

어떤 이유로 든 다른 기본 유형을 사용하려는 경우 비표준 상태를 표시하고 향후 공식 이름과의 잠재적 충돌을 피하기 위해 "X-"로 시작하는 이름을 지정해야합니다.

많은 HTTP 요청 / 응답X- 에 자체 정의 된 일종의 헤더가 포함 되어 있음을 알 수 있습니다. 유형을 확인할 때 이것을 명심하십시오.


RFC 1341은 HTTP와 관련이 없습니다.
Julian Reschke

2
RFC 1341은 HTTP에서 사용되는 Content-Type 헤더를 설명합니다. 그들이 서로 관련이 없다고 정확히 어떻게 말 하시겠습니까?
Jeroen Vannevel

2
더 이상 사용되지 않으며 최신 문서로 여러 번 대체되었습니다. 관련된 내용은 < greenbytes.de/tech/webdav/… > (및 참조 문서)의 내용입니다.
Julian Reschke

3

가능한 "컨텐츠 유형"값의 하위 세트를 다루는 것을 목표로하고 있습니다. 질문은 알려진 컨텐츠 유형을 식별하는 데 집중하는 것 같습니다.

@Jeroen RFC 1341 참조는 훌륭하지만 상당히 철저한 목록을 위해 IANA는 공식적으로 등록 된 미디어 유형의 웹 페이지를 여기에 유지 합니다.


그것들은 "알려진"미디어 타입 (즉, "야생에서 관찰 된 것의 샘플")이 아니라 IANA 등록 절차를 거친 미디어 타입입니다. 따라서 공식적으로 등록됩니다. 이것을 지적하는 것이 중요하다는 것을
알았

0

jaxrs 또는 다른 것을 사용하는 경우 요청을 보내기 전에 mediatype.User 인터셉터라는 클래스가 있으며이를 비교하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.