1. 컨텐트 타입 (Content Type)
ㅇ 메일, HTTP(웹) 등에서, 전송되는 내용이 무엇인지를 알려주는 형식명 (Content-Type)
ㅇ 원래, 텍스트로 만 가능했던 초기 인터넷 전자메일에, ☞ MIME 참조
- 파일,이미지,오디오 등도 첨부 가능케 하도록,
- 다목적용으로 확장한 타입 알림 규격 임
2. HTTP에서, Content-type 관련 헤더 항목 ☞ HTTP 헤더 항목 참조
ㅇ Content-type : 타입 및 서브타입(type/subtype)으로 구성
- 타입(type)은, 미디어 타입으로써, 10개 정도 표준으로 지정됨 ☞ IANA 미디어 타입 종류
. 즉, (application,audio,font,example,image,message,model,multipart,text,video)
- 서브타입(subtype)은, 각 타입별로 수십에서 수백개 정도
- 例) Content-Type: application/xml 또는 image/gif 또는 application/pdf 등
. text/html (HTML), text/plain (텍스트 파일)
. image/gif (GIF 이미지 파일), image/jpeg (JPEG 이미지 파일)
. video/mp4, video/webm, video/ogg ☞ 미디어 컨테이너 참조
. application/xml (XML), application/pdf, application/vnd.ms-powerpoint (MS PowerPoint)
- 例) Content-Type: text/html; charset=utf-8
. 타입 :text, 서브타입 : html, 문자셋 : UTF-8
- 例) Content-Type: multipart/form-data; boundary= ☞ 아래 3.항 참조
. 한 번에 복수 개의 파일을 전송 함
ㅇ Content-Language : 해당 개체와 가장 잘 어울리는 자연언어
ㅇ Content-Encoding : 해당 개체 데이터의 압축 방식 (압축 알고리즘)
ㅇ Content-Length : 전달되는 해당 개체의 바이트 수 (10진수)
- 요청 및 응답 HTTP 메세지의 바디 부분의 길이를 지정
- 또는, 특정 지정된 해당 개체의 길이를 지정함
※ 만일, 압축이 시행되었다면, 위 Content-Encoding,Content-Length 2개 항목을 토대로,
- 해당 압축을 풀 수 있음
ㅇ Content-Location : 해당 개체가 실제 어디에 위치하는가를 알려줌
ㅇ 미지의 유형
- X-Content-Type-Options: nosniff
. 보안 때문에, 웹브라우저가 MIME 타입이 아닌 내용을 보고,
. 미리 파일 유형을 예단,추측 하지 않도록 지시함
ㅇ Content-Disposition : 웹브라우저는, 파일 다운로드 대화상자를 표시 후 파일 저장 도모
- 例) Content-Disposition: attachment; filename=filename.xlsx
3. HTTP에서, 전송되는 개체에 대한 미디어 타입 표현 例)
ㅇ MIME 미디어 타입 및 문자 인코딩 방식(EUC-KR,UTF-8 등) 둘 다 지정
- 例) Content-Type: text/html; charset=UTF-8 또는 charset-latin-1 등
. 미디어 타입 뒤에 세미콜론(;)을 붙이고, 문자 인코딩 방식 지정 가능
ㅇ 폼 요청 (웹브라우저 -> 웹서버)
- 例) Content-Type: application/x-www-form-urlencoded ☞ 폼 요소 참조
. 한 번에 1개 파일 씩 전송
. 요청시, 해당 개체가 폼에 의해 전송되는 데이터 임을 알림
. 문자 이외 이진 파일 등의 형식 가능
ㅇ 폼 파일 송신 (웹브라우저 -> 웹서버)
- 例) Content-Type: multipart/form-data; boundary= ☞ 폼 요소 참조
. 복수개 파일 전송(업로드) 등에 사용
. 문자 이외 이진 파일 등의 형식 가능
. (각 블록 간 경계 구분)
.. 블록 간 경계를 위해, 속성 (boundary=...)에 의해, 블록 간 구분 가능
.. 맨 끝 블록에 `--`로 표시
. (각 블록별 구성)
.. 각 블록 마다, `헤더 + 빈 줄 + 콘텐츠`로 구성됨
. (각 블록별 지정 필요한 4가지 요소)
.. 전송 명칭 (name=)
.. 파일명 (filename=)
.. 파일 종류 (Content-Type: text/plain 등)
.. 파일 내 실제 내용
. (헤더 例)
.. Content-Disposition:form-data; name="attachment-file"; filename="test.txt"
.. Content-Type:text/plain