HTTP 헤더 줄 바꿈 스타일


161

HTTP 헤더에 사용하기에 적합한 줄 바꿈 스타일은 무엇입니까? \r\n또는 \n왜?

답변:


224

\r\n프로토콜 사양에서 줄 바꿈으로 정의되어 있기 때문입니다. RFC2616은 2.2 절 "기본 규칙"의 시작 부분에 다음과 같이 명확하게 명시되어 있습니다 .

CR = <US-ASCII CR, 캐리지 리턴 (13)>
LF = <US-ASCII LF, 줄 바꿈 (10)>
HTTP / 1.1은 엔티티를 제외한 모든 프로토콜 요소에 대한 라인 끝 마커로 시퀀스 CR LF를 정의합니다. -몸

RFC2616은 RFC7230에 의해 기술적으로 더 이상 사용되지 않지만 과감하게 변경하지 않고 섹션 3 의 구분 기호로 CRLF를 다시 호출하며 RFC는 RFC5234, 부록 B.1 을 참조 하여 "CRLF"를로 정의 %x0D %x0A합니다.

그러나 사람들이 어떤 목적 으로든 표준을 위반할 것임을 인식하고 19.3 절에 "허용 오차 조항"이 있습니다 ( 올바른 순서를 반복 함 ).

메시지 헤더 필드의 줄 종결자는 시퀀스 CRLF입니다. 그러나 이러한 헤더를 구문 분석 할 때 응용 프로그램은 단일 LF를 줄 종결 자로 인식하고 선행 CR을 무시하는 것이 좋습니다.

최신 RFC7230에서는 § 3.5

시작 라인 및 헤더 필드에 대한 라인 종결자가 시퀀스 CRLF이지만, 수신자는 단일 LF를 라인 종결 자로 인식하고 선행 CR을 무시할 수있다.

따라서 악이되고 싶지 않거나 RFC 규칙을 위반하지 않는 경우을 사용하십시오 \r\n.


@Fred : 아니오, 거기 이다 너무 명백한 것 같은 일 - 불필요한 반복과 불필요하게 반복하고 무의미한 동일한 정보 구름에게 메시지를 반복. 특히 스펙에서 동일한 내용이 바로 위에 인용 될 때 더욱 그렇습니다.
Piskvor는

2
좋은 대답입니다. 이는 블로그와 기사가 불필요하고 도움이되지 않는 간단한 명확한 질문에 대한 간단한 명확한 답변입니다.
Miles Rout

@MilesRout : 감사합니다 :)
Piskvor 건물 왼쪽

2
@Pacerier : 그런 것은 전혀 언급하지 않습니다. 본질적으로 "이것은 HTTP에 유효한 구문입니다"를 지정하기 때문에 다른 것은 유효하지 않습니다. 물론, 당신은 할 수 당신을 막을 수 아무도 없다, 당신이 원하는 모든 RFC를 위반 - 뭔가를하지만 당신은 기술적으로 더 이상 HTTP 클라이언트를 실행하지 않는 그런 종류의 유사한의 모습)
Piskvor 왼쪽 건물

2
RFC2616을 폐기 한 RFC7230은 섹션 3.5
Grief

22

\ r \ n RFC 2616에 나와 있기 때문에 (섹션 2.2, "기본 규칙") :

HTTP / 1.1은
엔티티 CR을 제외한 모든 프로토콜 요소에 대한 라인 끝 마커로 시퀀스 CR LF를 정의합니다 (
허용 애플리케이션에 대해서는 부록 19.3 참조 ). 엔티티 본문 내 줄 끝 마커는 3.7 절에 설명 된대로 연관된 미디어 유형에 의해 정의됩니다.

   CRLF           = CR LF

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