나는 HTTP 프록시 서버를 구현하여 프로토콜의 더 미세한 부분에 대해 더 깊이 이해하고 그 동안 소켓 프로그래밍을 배우고 싶지만 본격적인 구현은 원하지 않는다. HTTP 서버. 프록시를 구현하려는 경우 관련 페이지의 관련 RFC 페이지 및 섹션은 무엇입니까?HTTP 프록시 구현하기
일반 HTTP 프록시로 시작한 다음이를 HTTPS 프록시로 확장 할 계획입니다.
나는 HTTP 프록시 서버를 구현하여 프로토콜의 더 미세한 부분에 대해 더 깊이 이해하고 그 동안 소켓 프로그래밍을 배우고 싶지만 본격적인 구현은 원하지 않는다. HTTP 서버. 프록시를 구현하려는 경우 관련 페이지의 관련 RFC 페이지 및 섹션은 무엇입니까?HTTP 프록시 구현하기
일반 HTTP 프록시로 시작한 다음이를 HTTPS 프록시로 확장 할 계획입니다.
나는 HTTP 1.0 (RFC 1945)과 HTTP 1.1 (RFC 2616)을 살펴볼 것입니다. 당신은 또한에 좀 걸릴 수 있습니다 :
당신이 구글 찾을 수있는 예제 코드의 많은 아마있다!
유용한 IETF에서 HTTPbis 그룹의 작업을 찾을 수도 있습니다. 우리는 더 명확하고 쉽게 구현할 수 있도록 사양을 다시 작성하고 있습니다.
자세한 내용은 http://trac.tools.ietf.org/wg/httpbis/trac/wiki을 참조하십시오.
저는 현재 또한 작업 중입니다. 기본 구현은 간단합니다. 소켓 포트를 듣고, 호스트를 찾고, 원격 서버에 연결하고, http 헤더를 보내고, 서버에서 recv를 보낸 다음 클라이언트로 다시 보냅니다. 어려운 부분은 일관된 연결과 파이프 라이닝입니다.
HTTPS로로, 헤더는 다음과 같이이다 :
CONNECT addons.mozilla.org:443 HTTP/1.1
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:18.0) Gecko/20100101 Firefox/18.0
Host: addons.mozilla.org
프록시 다음, 클라이언트에 200 메시지 회신 한 후, 서버에 연결 앞뒤로 리디렉터로 리디렉션합니다.
확인이 : http://tools.ietf.org/html/draft-luotonen-ssl-tunneling-03
이 정보를 사용하여 SSLJ 터널링을 NodeJS에서 여러 가지 결과를 얻으려고했습니다. 나는 충분히 낮은 연결을 잡으려고하지 않는다고 생각하고 NodeJS 기본 처리 규칙은이 프로토콜을 지원하지 않는다. 참조 : https://github.com/pinf/pinf-proxy-js/issues/1 – cadorn
@strongwillow http 쿠키와 같은 것들은 어떻게 처리됩니까? 특히 프록시는 원격 서버의 관점에서 볼 때 클라이언트이기 때문에 호출 클라이언트뿐 아니라 프록시에서도 쿠키가 삭제됩니까? – Howiecamp
@Howiecamp 정상적인 HTTP 헤더 일 뿐이므로 쿠키에는 특별한 대우가 없습니다. – strongwillow
RFC3986은 한 동안 다시 2396을 폐기. 822가 2822로 바뀌었지만 HTTP가 MIME이 아니기 때문에 나는 그것을 보지 않는 것이 좋습니다 (또는 1521). MIME과 같은 것입니다. –