Accept와 Content-Type HTTP 헤더의 차이점


118

따라서 Accept헤더는 서버에 브라우저가 찾고있는 리소스의 MIME 유형을 알려줍니다. 예를 들어 서버는 일반 텍스트, HTML, JSON 등을 보낼 수 있습니다.

좋아, 그건 말이되지만 Content-Type헤더를 보면 같은 일을하는 것 같습니다. 예를 들어, 서버에 텍스트 또는 JSON을 원한다고 알려줍니다.

그렇다면 HTTP 헤더 Accept와 의 차이점은 무엇 Content-Type입니까?

답변:


155

올바르게 알 수 있듯이 Accept 헤더 는 HTTP 클라이언트가 서버에 허용 할 컨텐츠 유형을 알리기 위해 사용됩니다. 그런 다음 서버는 응답을 다시 보냅니다. 응답에는 클라이언트에게 반환 된 컨텐츠의 컨텐츠 유형이 무엇인지 알려주는 Content-Type 헤더 가 포함됩니다 .

그러나 알다시피 HTTP 요청 에는 Content-Type 헤더 도 포함될 수 있습니다 . 왜? POST 또는 PUT 요청 에 대해 생각해보십시오 . 이러한 요청 유형을 사용하면 클라이언트는 실제로 요청의 일부로 서버에 많은 데이터를 전송하고 있으며 Content-Type 헤더는 서버에 데이터가 실제로 무엇인지 알려주므로 서버가 구문 분석하는 방법을 결정합니다.

특히 HTML 양식 제출로 인한 POST 요청의 경우 요청의 Content-Type은 일반적으로 태그 의 속성에 지정된대로 표준 양식 컨텐츠 유형 중 하나입니다 .enctype<form>

  • application/x-www-form-urlencoded (소량의 간단한 ASCII 텍스트에 대한 기본, 이전, 단순, 약간 적은 오버 헤드, 파일 업로드 지원 없음)
  • multipart/form-data (최신, 파일 업로드 지원 추가, 대량의 이진 데이터 또는 비 ASCII 텍스트에 대한 효율성 향상)

22
  • 수락 : 브라우저가 소화 할 수있는 것입니다. 예를 들어 누군가 이해할 수있는 모든 언어입니다.
  • Content-Type : 실제 데이터의 형식, 예를 들어 누군가가 말하는 언어입니다. 컴퓨터는 사람들이 "오, 그는 독일 사람입니다!" 또는 "그녀는 중국어를 해요!"

1
반드시 브라우저 일 필요는 없지만 모든 http 클라이언트입니다.
Jim Aho

20

수락은

여기 내 요청이 있으며이 응답 형식을 수락하고 싶습니다.

내용 유형은

여기 내 요청 (또는 응답)이 있으며이 (Content-Type)은 요청 (또는 응답)으로 보내는 내용의 형식입니다.


응답이 늦어도 서버에서 "수락"형식으로 보내지 않으면 어떻게됩니까?
shriek

1
@shriek을 결정하는 것은 클라이언트에게 달려 있습니다. 대부분의 http 클라이언트 (또는 브라우저)가 실제 데이터를 "지능적으로"보고 실제로 무엇인지 확인할 것입니다. 아마도 한 클라이언트가 JSON이어야하는 응답을 무시할 수 있지만 다른 것으로 보이므로 구문 분석이 실패합니다.
Jim Aho

5

요청-응답 대화이므로 클라이언트

  • "Content-Type"의 요청을 보내고
  • "Accept"매체 유형의 응답을받을 것으로 예상합니다.

잘못되었습니다. 수락은 요청 헤더입니다. 허용 된 답변을 참조하십시오.
darron

2
@ darron 아니요,이 답변은 맞습니다. 그는 그것이 요청 헤더가 아니라고 말하는 것이 아니라, 그 목적은 서버가 어떤 종류의 응답을 되 찾을 것인지 알려주는 것입니다. 다른 답변과 중복되지만 가장 간결하다고 생각합니다. +1.
Todd Menier

0

동의하기

Accept request HTTP 헤더는 클라이언트가 이해할 수있는 컨텐츠 유형을 MIME 유형으로 표시합니다. 컨텐츠 협상을 사용하여 서버는 제안 중 하나를 선택하여 사용하고 클라이언트에게 컨텐츠 유형 응답 헤더를 사용하여 선택한 것을 알립니다. 브라우저는 요청이 수행되는 컨텍스트에 따라이 헤더에 적절한 값을 설정합니다. CSS 스타일 시트를 가져올 때 이미지, 비디오 또는 스크립트를 가져올 때와 다른 값이 요청에 설정됩니다.

( 출처 : developer.mozilla.org )

컨텐츠 타입

Content-Type 엔터티 헤더는 리소스의 미디어 유형을 나타내는 데 사용됩니다.

응답에서 Content-Type 헤더는 클라이언트에게 반환 된 컨텐츠의 컨텐츠 유형이 실제로 무엇인지 알려줍니다. 브라우저는 경우에 따라 MIME 스니핑을 수행하며이 헤더의 값을 반드시 따를 필요는 없습니다. 이 동작을 방지하기 위해 헤더 X-Content-Type-Options를 nosniff로 설정할 수 있습니다.

요청 (예 : POST 또는 PUT)에서 클라이언트는 실제로 어떤 유형의 데이터가 전송되는지 서버에 알려줍니다.

( 출처 : developer.mozilla.org )

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