
아파치가 400 상태 코드를 반환하는 이유에 대한 공식 또는 비공식 문서를 아는 사람이 있습니까? 이는 잘못된 클라이언트 요청 때문이라는 것을 알고 있습니다. 그런데 잘못된 클라이언트 요청을 구성하는 것은 무엇입니까? 요청 크기가 크거나 잘못된 문자 등으로 인해 400이 발생할 수 있다는 것을 알고 있지만 일종의 최종 목록이 필요합니다.
예를 들어 o'reilly의 "아파치에 대한 최종 가이드"에서는 이러한 세부 정보를 제공하지 않습니다.
감사해요! 데미안
답변1
400
AFAIK 및 거의 정의에 따르면 응답 코드는 유효한 요청으로 구문 분석할 수 없는 Apache httpd에서 발생하는 모든 항목에 대한 것이므로 응답을 유발하는 명확한 목록이 있을 수 없습니다 .
그게 뭔가 그럴 수도 있지"나타난다"유효한 요청과 유사하거나 완전히 쓰레기일 수 있습니다.
응답 400
은 WTF*#K
!
@NikitaKipriyanov가 언급한 것처럼 아파치(오류) 로그는 일반적으로 어떤 요청 라인이 400 응답을 트리거했는지 기록합니다.
역사적으로 HTTP 요청 라인은 다음으로 종료됩니다.캐리지 리턴 및 줄 바꿈따라서 로그에는 일반적으로 첫 번째 캐리지 리턴과 줄 바꿈을 수신할 때까지 Apache에 발생한 모든 내용이 표시됩니다.
내 Apache 로그에서 400개의 응답을 빠르게 검색하면 여러 가지 또는 반복되는 "잘못된 요청" 유형이 표시됩니다.
가장 일반적인 것:유효한 찾고HTTP 1.1요청 라인, 이는 다음으로 구성됩니다.대소문자 구분 요청 방법, ㅏ공간, 요청한URL, 또 다른공간그리고프로토콜 버전예: 헤더가 요청에 포함되지 않았고 해당 헤더가 HTTP/1.1에서 필수이기
"GET / HTTP/1.1"
때문에 거부되었을 가능성이 높습니다.Host:
매우 일반적인:바이너리(핸드셰이크) 데이터예를 들어 이스케이프된 16진수로 표시됩니다.
"\x16\x03\x01\x01\xfc\x01"
이 예에서는 일반 HTTP 포트 80(또는 TLS가 구성되지 않은 다른 포트, 심지어 443)에서 TLS 1.2 연결을 설정하려고 시도하여 발생합니다."\x16\x03\x01
유사한 TLS 1/1.1 핸드셰이크입니다.\x16\x03"
비슷한 SSL3 핸드셰이크입니다- 다른 많은 변형
- 아니면 그냥
"\n"
다음과 연결을 시도합니다.완전히 다른 프로토콜웹 서버 포트에 대한 HTTP(S)보다 즉,
"SSH-2.0-OpenSSH_7.4"
웹 서버 포트에서 SSH가 제공되는지 조사(시스템 관리자와 사용자가 회사 방화벽을 우회하기 위해 자주 사용하는 트릭)"SSTP_DUPLEX_POST /sra_{BA195980-CD49-458b-9E23-C84EE0ADCD75}/ HTTP/1.1"
다음을 지원하는 VPN 엔드포인트를 검색합니다.SSTP 프로토콜- 다른 사람.