HTTP 헤더에 사용하기에 적합한 줄 바꿈 스타일은 무엇입니까? \r\n
또는 \n
왜?
답변
\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을 무시하는 것이 좋습니다.
시작 라인 및 헤더 필드에 대한 라인 종결자가 시퀀스 CRLF이지만, 수신자는 단일 LF를 라인 종결 자로 인식하고 선행 CR을 무시할 수있다.
따라서 악이되고 싶지 않거나 RFC 규칙을 위반하지 않는 경우을 사용하십시오 \r\n
.
답변
\ r \ n RFC 2616에 나와 있기 때문에 (섹션 2.2, “기본 규칙”) :
HTTP / 1.1은
엔티티 CR을 제외한 모든 프로토콜 요소에 대한 라인 끝 마커로 시퀀스 CR LF를 정의합니다 (
허용 애플리케이션에 대해서는 부록 19.3 참조 ). 엔티티 본문 내 줄 끝 마커는 3.7 절에 설명 된대로 연관된 미디어 유형에 의해 정의됩니다.CRLF = CR LF