CONNECT-ийн дараах хоосон мөрийг хүлээнэ үү
Төлөвийн мөр эхэлж ирсэн ч, socket-ийг TLS-д шилжүүлэхийн өмнө бүрэн HTTP/1 CONNECT хариуг уншина уу.
Клиент 200 Connection Established харж, TLS эхлүүлээд, TLS бичлэг байх ёстой газарт шууд утгагүй зүйл мэдээлдэг. Очих газрын шифр тохиргоог буруутгахаас өмнө дуусаагүй HTTP хариу хайна уу.
HTTP/1 CONNECT солилцоонд төлөвийн мөр нь хариуны зөвхөн эхлэл. Түүний дараа толгойн талбарууд ирж болно. Амжилттай CONNECT хариуны дараа толгойн хэсгийг дуусгах хоосон мөр нь туннельд шилжихийг илэрхийлнэ.
HTTP/1.1 200 Connection Established\r\n
Proxy-Agent: example\r\n
\r\n
Эдгээр байт нэг уншилтаар, хэд хэдэн уншилтаар, эсвэл дараагийн байтуудыг ч агуулсан уншилтаар ирж болно. TCP серверийн бичих хил хязгаарыг хадгалдаггүй.
Шилжүүлэлтийг parser-ийн тодорхой төлөв болгоно уу
- Төлөвийн мөрийг цуглуулж, задлан шинжилнэ үү. Яг англи шалтгаан хэллэгийн оронд тоон төлөвийг ашиглана уу.
- Толгойн хэсгийн бүрэн төгсгөл ирэх хүртэл үргэлжлүүлнэ үү. Амжилттай төлөвийн мөр үлдсэн талбаруудыг алга болгодоггүй.
- Амжилттай CONNECT хариунд тэр төгсгөлийн дараах байтыг туннелийн өгөгдлийн эхлэл гэж үзнэ үү. Бусад хариунд тохирох HTTP хариу болон баталгаажуулалтын боловсруулалтыг дагана уу.
- Холболт болон ашиглагдаагүй байтуудыг дараагийн протокол дэмждэг буферт I/O интерфэйсээр дамжуулна уу.
Сүүлийн алхам нь сайн тусгаарлагч хайлттай ч чухал. Буферт уншигч parser-аас гуйснаас илүү socket хэрэглэсэн байж болно. Тэр уншигчийг орхиж нүцгэн socket дээр TLS эхлүүлбэл байтууд уншигчийн хувийн буферт гацаж болно.
Тохиргооны хугацаа болон толгойн хэмжээний хязгаар ашиглана уу. Төгсгөлийн өмнөх EOF нь бүрэн бус прокси хариу бөгөөд үүрд хүлээх эсвэл ямар ч байсан TLS турших урилга биш.
Хэд хэдэн хилийг бодож үзээрэй
Proxy-Agent:-ийн дараа дуусах уншилтыг төсөөлөөрэй. Parser-д нэмэлт HTTP толгойн байт хэрэгтэй хэвээр. Сүүлийн CRLF дарааллын дунд дуусах өөр нэг уншилтыг төсөөлөөрэй. Энэ нь одоо ч бүрэн толгойн хэсэг биш. Одоо нэг буферт бүрэн амжилттай толгойн хэсгийн дараа туннелийн байтууд ирэхийг төсөөлөөрэй: тэдгээр нэмэлт байтууд шилжүүлэлтийг давах ёстой.
407 бол өөр үр дүн. Тэрээр баталгаажуулалтын боловсруулалт шаарддаг; хэзээ ч нээгдээгүй туннель руу TLS ClientHello илгээхийг зөвшөөрдөггүй.
Гарын барилцааг хэрэгжүүлэх нь өөрөө ажил биш л бол арчилгаатай коннекторыг сонгоно уу. Энэ хязгаар нь энд үзүүлсэн HTTP/1 солилцоонд хамаарна. HTTP/2 прокси CONNECT-ийг өөр фреймжүүлэлттэй урсгал дээр зөөдөг.