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 : 해당 개체가 실제 어디에 위치하는가를 알려줌
ㅇ Content-Disposition : 웹브라우저는, 화면 표출인지, 로컬 저장인지를 알려주는 헤더
- inline : 기본값으로, 웹페이지 내부에 display
- attachment : 다운로드 해야되는 것이라고 명시
- attchment; filename= : 다른 이름으로 저장
- 例) Content-Disposition: attachment; filename=filename.xlsx
ㅇ X-Content-Type-Options : nosniff
- 보안 때문에, 웹브라우저가 MIME 타입을 무시하고, 미리 파일 유형을 예단,추측 못하게 지시함
- 例) `plain/text` 파일 내부에 HTML,자바스크립트가 적혀 있어도, 이를 실행 못하게 함
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