dev-writeup-2024 / march

개발 1일 1글 스터디
2 stars 0 forks source link

[03-19] Content-Type 과 데이터 #39

Open snaag opened 6 months ago

snaag commented 6 months ago

Content-Type 과 데이터

HTTP 메시지에는 거의 모든 데이터를 보낼 수 있습니다. 예를들어 이런 것들이 있습니다.

그리고 특정 타입의 데이터를 보낼 때는, 수신자에게 특정 타입임을 명시해주어야 합니다. 만약 명시하지 않는다면 데이터의 호환성 문제나 보안 문제 등이 있을 수 있습니다. Content-Type 에 대해서는 아래에서 더 자세히 다루겠습니다.

타입, Content-Type

Appendix

Content-Type

Content-Type 이란

HTTP 헤더의 일종으로, 클라이언트(예: 웹 브라우저)와 서버 간에 데이터를 주고받을 때 해당 데이터의 미디어 타입을 지정하는 데 사용됩니다. 이 헤더는 전송되는 데이터의 유형과 형식을 명시하여, 수신자가 데이터를 어떻게 처리해야 할지 결정하는 데 도움을 줍니다.

헤더의 구조

Content-Type 헤더는 미디어 타입과 서브 타입으로 구성됩니다.

미디어 타입은 데이터의 기본 유형을 나타내는 것으로 text, image, application 등이 있습니다. 서브 타입은 미디어 타입을 더 구체적으로 지정한 것 입니다. 예를 들어 같은 텍스트 타입 일지라도 html 페이지는 text/html 을, 텍스트는 text/plain 입니다. 이미지도 image/jpeg, image/png 등이 있습니다.

Content-Type 을 명시하지 않는다면

따로 명시하지 않는다면 Content-Type 은 application/octet-stream 입니다. 8비트로 된 데이터 라는 뜻을 말합니다. 다른 데이터들이 application/json, image/jpeg, text/plain 등 처럼 구체적이지는 않습니다. 아마 이 데이터는 기본값이니까 이대로 다루면 안돼! 이런 의미일 듯 합니다. 실제로도 최근에 안드로이드 개발을 하던 친구가 서버 개발자가 내려준 데이터의 Content-Type 이 application/octet-stream 으로 되어있어 읽을 때 오류가 났다는 이야기를 해준 적이 있습니다.

그러나 따로 명시하지 않았는데도 Content-Type 을 문제없이 주고받았던 기억이 있는데요, 어떻게 된걸까요? 웹서버와 브라우저, 프레임워크 등에서 데이터를 보고 적절한 타입을 넣어주었기 때문입니다. 그러나 어디까지나 추론이기 때문에 정확하지 않을 수 있습니다. 때문에 Content-Type 을 명시하여주는 것이 좋습니다.