반응형
HTTP 서버가 HTTP 헤더 이름에 밑줄을 금지하는 이유
몇 달 전에 nginx 프록시에 의해 전송되지 않은 "SESSION_ID"라는 사용자 지정 HTTP 헤더에 문제가 발생했습니다.
HTTP 프로토콜의 RFC에 따라 밑줄이 금지된다고 들었습니다.
인터넷 검색을 통해 아파치 또는 nginx 와 같은 대부분의 서버가 이를 불법으로 정의 한다는 사실을 발견했습니다 .
RFC2616 섹션 4.2에 따르면
RFC 822의 섹션 3.1에 제공된 것과 동일한 일반 형식을 따릅니다. [9]
그리고 RFC822 는 말한다
필드 이름은 인쇄 가능한 ASCII 문자로 구성되어야합니다 (즉, 콜론을 제외한 33.에서 126. 사이의 값을 갖는 문자).
밑줄은 ASCII 테이블의 10 진수 95 자입니다 (33-126 범위에 속함). 내가 무엇을 놓치고 있습니까?
그들은 금지되어 있지 않습니다. CGI 유산입니다. 여기
명시 적으로 설정하지 않으면
underscores_in_headers on;
nginx는 밑줄이있는 HTTP 헤더를 자동으로 삭제합니다 (HTTP 표준에 따라 완벽하게 유효 함). 이는 헤더를 CGI 변수에 매핑 할 때 모호함을 방지하기 위해 수행됩니다. 대시와 밑줄은 모두 해당 프로세스 중에 밑줄에 매핑되기 때문입니다.
헤더 필드의 밑줄은 허용되지만 ( RFC 7230, 섹션 3.2. ) 실제로는 드뭅니다.
반응형
'development' 카테고리의 다른 글
Express의 URL에서 여러 매개 변수 사용 (0) | 2020.12.11 |
---|---|
옥 템플릿에서 스타일 태그를 사용하는 방법은 무엇입니까? (0) | 2020.12.11 |
Spark SQL : 열 목록에 집계 함수 적용 (0) | 2020.12.11 |
오늘을 maxDate로 사용하는 jQuery DatePicker (0) | 2020.12.10 |
Java를 사용하여 버킷의 모든 AWS S3 객체를 나열하는 방법 (0) | 2020.12.10 |