"GET /index.html" 만 해도 되는건 왜 인가요?

jagalchee의 이미지

HTTP 프로그래밍에 참조할 만한것들에세 대해서 많은 분들이 알려주셔서 정말 감사드립니다.(꾸벅)

헌데, 제가 telnet xxx.xxx.xxx 80 으로 접속한 후에
GET /index.html 만 하고 바로 엔터를 치니까 공백라인을 입력하지 않아도, html 의 내용이 뜨던데요.. 원래는 GET 메쏘드는 GET /index.html HTTP/1.0 과 같이 맨 뒤에 HTTP 프로토콜 버전을 적어줘야 하는 것으로 알고 있거든요.
그리고 나서 적당히 헤더내용 덧 붙이고, 마지막으로 공백라인 한 줄 더 추가하면 되는 것으로 알고 있는데요.

GET /index.html 만 하면, HTTP 프로토콜의 버전은 어떻게 처리되는것인가요? 그리고 이 경우 그냥 엔터만 치면 바로 html 내용이 뜨던데(헤더 내용 입력할 순간도 없이 말입니다.), 또 이건 왜 이런건가요?

소타의 이미지

HTTP/0.9 로 처리되어 버린것 같네요.
HTTP/0.9 는 프로토콜이 없이 파일이름만 주면 됩니다.
프로토콜로 따지면 잘못된 요청이지만 웹서버가 임의로 처리하는 걸거구요. 모든 웹서버가 그렇게 처리하지는 않을겁니다.

랜덤여신의 이미지

Quote:
일반적인 방법인 <major>.<minor>의 방법으로 표기한다. 물론 major 부분은 중요한 변경이 있을 때 변경하고 minor는 조금 바뀌었을 때 값을 올리게 된다.
HTTP-Version = ‘HTTP’ ‘/’ 1*DIGIT ‘.’ 1*DIGIT
조금 어렵게 표현되지만 HTTP/1.1 등과 같이 표기한다는 이야기이다. 이부분은 항상 요구의 첫줄에 표기하며 서버와 클라이언트가 처리해야할 방식을 결정하므로 중요하다. 이부분의 표기가 없을 경우 서버프로그램들은 HTTP/0.9로 인식을 한다.