가희의자기개발블로그

Content-Type Header와 Accept Header차이 본문

웹 프로그래밍/HTTP

Content-Type Header와 Accept Header차이

가희gahui 2021. 5. 1. 12:49
반응형

얼마전, 라라벨에서 json타입으로 return 해주기위해서 Content-Type과 Accept 에 json/application이라고 명시해준적이 있다.

 

Content-Type은 해당 데이터의 타입을 명시해주는것이라고만 간단히 알고 있었는데 Accept는 무엇을 뜻하는지 알지 못해서 찾아봤다. 

 

Content-Type

Content-Type헤더는 이 메시지에 담긴 객체의 미디어 타입을 알려준다.

 

만약 Content-Type헤더가 없다면 데이터를 전송하는쪽(브라우저나 웹서버)에서는 특정한 형식의 데이터일지라도 데이터를 받는 입장에서는 단순히 텍스트 데이터로 받아들인다.  
  
중요한점은 HTTP 요청의 경우 GET방식인 경우에는 무조건 URL 끝에 쿼리스트링으로 value=text 형식으로 보내지기 때문에 Content-Type은 필요가 없다.  
즉 GET방식으로 데이터를 전송 시 웹서버 입장에서는 value=text 형식 데이터라는 것을 알 수 있기 때문이다 . 
  
따라서 Content-Type은 POST나 PUT처럼 메시지 BODY에 데이터를 보낼때 필요로 한다.  
예를 들어 브라우저를 기준으로 설명하자면 AJAX를 통해 json 형식의 데이터를 전송하는 경우 Content-Type 값을 application/json 으로 지정하여 보낸다. 

<form>태그를 통해 첨부파일 등을 전송하는 경우라면 브라우저가 자동으로 Content-Type을 multipart/form-data로 설정하여 요청 메시지를 보낸다. 

 

 

 

Accept

서버에게 자신이 받을 수 있는 미디어 타입이 무엇인지 알려주기 위해 클라이언트가 사용한다. Accept헤더 필드 값은 클라이언트가 사용할 수 있는 미디어 타입의 목록이다. 예를 들어 요청에 Accept 헤더를 포함시킴으로써, 브라우저는 사용할 수 없는 유형의 비디오나 객체를 다운 받는 상황을 피할 수 있다. 

서버가 미디어 타입의 여러개를 가지고 있는 경우를 위해, Accept 헤더 필드는 또한 서버에게 어떤 미디어 타입을 선호하는지 말해주는 품질값의 목록을 포함 할 수도 있다. 

 

 

 

 

 

차이점 

Content-Type 헤더와 Accept 헤더 둘 다 데이터 타입(MIME)을 다루는 헤더이다. 하지만  Content-Type 헤더는 현재 전송하는 데이터가 어떤 타입인지에 대한 설명을 하는 개념이고  Accept 헤더는 클라이언트가 서버에게 어떤 특정한 데이터 타입을 보낼때  클라이언트가 보낸 특정 데이터 타입으로만 응답을 해야한다. 

반응형

'웹 프로그래밍 > HTTP' 카테고리의 다른 글

HTTP Header  (0) 2020.07.31
Comments