브라우저는 "\ r \ n"또는 "\ n"을 전송합니까? 아니면 브라우저에 따라 달라 집니까?
이 질문은 수백만 년 동안 저를 괴롭 혔습니다. 여러 줄을 허용하는 텍스트 영역 (예 : 사용자 프로필의 "Bio")이있는 웹 사이트를 만들 때마다 항상 다음과 같은 편집증 코드를 작성합니다.
// C# code sample...
bio = bio.Replace("\r\n", "\n").Replace("\r", "\n");
bio = Regex.Replace(@"\n{2,}", "\n\n");
그렇다면 브라우저 <textarea name="Bio"></textarea>
는 여러 줄이 있는 경우 무엇을 보낼 까요?
HTTP 와 MIME 사양은 헤더 행은 \ 연구 \ n로 끝나야합니다 지정,하지만 그들은 TEXTAREA의 내용으로 수행 할 작업에 대한 (일부는 그들이 명확한 경우는 취소되지 않는다는 주장) 명확하지 않다. (예를 들어 문제에 대한 HTML 작업 그룹 의이 스레드 를 참조하십시오 .)
다음은 메시지 헤더에 대한 HTTP / 1.1 사양의 인용문입니다.
메시지 헤더 필드의 행 종결자는 시퀀스 CRLF입니다. 그러나 애플리케이션은 이러한 헤더를 구문 분석 할 때 단일 LF를 줄 종결 자로 인식하고 선행 CR을 무시하는 것이 좋습니다.
나는 그것이 일반적으로 좋은 전략이라고 생각합니다. 당신이 생산하는 것에 대해서는 엄격하지만 받아들이는 것에 대해서는 자유로 워야합니다. 모든 종류의 줄 종결자를받을 것이라고 가정해야합니다. (CRLF 및 LF 외에도 Mac OS-9는 CR 만 사용했으며 여전히 일부가 있습니다. 유니 코드 표준 (섹션 5.8)은 줄 종결 자로 인식해야하는 광범위한 문자 시퀀스를 지정합니다. 여기 에 그 목록이 있습니다 .)
<textarea></textarea>
여러 줄이 있는 경우 브라우저는 무엇을 전송 합니까?
모든 최신 브라우저는 CRLF ( \r\n
)를 보냅니다 . 그러나 이것은 만족스럽게 표준화 된 것이 아니므로 모든 여러 줄 입력 텍스트의 줄 바꿈을 정규화하는 것이 가치가 있다고 생각합니다.
값을 양식에서 직접 제출하지 않고 JavaScript를 통해 읽을 때 브라우저 동작이 다릅니다. IE와 Opera는 CRLF가있는 문자열을 반환합니다. Firefox 및 WebKit은 LF를 반환합니다. 따라서 JavaScript / XMLHttpRequest 도움말과 함께 제출되는 모든 양식은 두 가지 양식으로 제공 될 수 있습니다.
'IT story' 카테고리의 다른 글
HTML5 + 자바 스크립트를 사용하는 프레젠테이션을위한 기본 프레임 워크 (0) | 2020.08.19 |
---|---|
스타일링하는 방법 (0) | 2020.08.19 |
Maven에서 "401 Unauthorized"오류가 발생하는 이유는 무엇입니까? (0) | 2020.08.19 |
R의 인쇄 출력에서 소수 자릿수 제어 (0) | 2020.08.19 |
React-Native : 모듈 AppRegistry는 등록 된 호출 가능 모듈이 아닙니다. (0) | 2020.08.19 |