2016-09-09 5 views
0

C++에서 HTTP 1.0 (그리고 현재 1.0 만) 서버를 코딩하려고합니다.HTTP 버전이 일치하지 않습니다 - 서버 응답 코드

여기 HTTP 1.0 사양을 읽었습니다 : https://www.w3.org/Protocols/HTTP/1.0/spec.html. 섹션 3 "프로토콜 매개 변수", 하위 섹션 3.1 "HTTP 버전"에서 클라이언트가 서버와 다른 버전을 보낸 경우 아무 것도 발견하지 못했습니다.

  • 버전 (서버) = 버전 (클라이언트) + 1 : https://www.w3.org/DesignIssues/Protocolcomms.html, 버전 불일치에 따르면

    , 우리는 두 가지 가능성을 가지고? 이전 버전으로 다운 그레이드해야 (불가능 내 서버 핸들 만 ? 하나 개의 특정 버전 - 내가 HTTP 0.9을 처리 할 수 ​​있습니다)

  • 버전 (서버)> 버전 (클라이언트) + 1 : 경고가 사용자 주어집니다 (한 4XX, 5XX을 이십 기가 바이트)
?

IETF RFC의 공식 견적은 인정할 만하다. 또는 Apache 나 Nginx와 같이 현재 가장 많이 사용되는 웹 서버를 예로들 수있다.

답변

2

마지막으로 언급 한 문서를 잘못 해석 한 것 같습니다. 귀하의 경우, 문제는 v(ME) < v(IT) (또는 v(ME) + 1 = v(IT))이며 해당 문서는 해당 상황에 대한 해결책을 제시하지 않습니다.

그러나 RFC 2616 (HTTP/1.1) (19.6 년) 상태 :

그리고 우리는 HTTP/1.1 클라이언트를 기대 :

  • 는 상태 -의 형식을 인식 HTTP/1.0 및 1.1 응답의 회선.

  • 은 HTTP/0.9, 1.0 또는 1.1 형식의 유효한 응답을 모두 이해합니다. 당신이 완벽하게 호환 1.0 서버를 구현하는 경우

그래서, 클라이언트는 응답을 받아 들여야한다.

에는 1.1 클라이언트를 다루는 방법에 대한 몇 가지 지침이 있습니다.

+0

올바르게 이해하면 x! = 1 인 HTTP 버전 x.y에 대한 요청을받을 때 505 (HTTP 버전 지원 안됨)를 보내야합니다. 그렇지 않으면 HTTP 1.0 일반 응답을 보내야합니까? – Ayak973

+0

나는이 문서 (https://www.w3.org/Protocols/HTTP/1.0/spec.html#HTTP-Version) (언급 했음)가 HTTP/1.0 서버가 HTTP/0.9 요청. 하지만 나 자신 0.9 지원을 구현 귀찮게하지 않을 것입니다 :) – robertklep

+0

아, 그 중 하나를 놓친, RFC는 나를 위해 순수한 두통입니다 ... 나는 HTTP1.1뿐만 아니라 RFC를 준수하는 0.9를 지원할 것입니다. 설명 주셔서 감사합니다! – Ayak973

관련 문제