La kliento vidas 200 Connection Established, komencigas TLS kaj tuj raportas sensencaĵon tie, kie devus esti TLS-rikordo. Serĉu nefinitaĵon en la HTTP-respondo antaŭ ol kulpigi la ĉifrajn agordojn de la celo.

En HTTP/1 CONNECT-interŝanĝo la statusa linio estas nur la komenco de la respondo. Kapo-kampoj povas sekvi. La malplena linio, kiu finas la kapo-sekcion, markas la transiron al la tunelo post sukcesa CONNECT-respondo.

HTTP/1.1 200 Connection Established\r\n
Proxy-Agent: example\r\n
\r\n

Tiuj bajtoj povas alveni en unu legado, en pluraj legadoj, aŭ en legado, kiu ankaŭ enhavas sekvajn bajtojn. TCP ne konservas la skribajn limojn de la servilo.

Faru la transdonon eksplicita stato de la analizilo

  1. Kolektu kaj analizu la statusan linion. Uzu la numeran statuson anstataŭ preciza angla kial-frazo.
  2. Daŭrigu ĝis la kompleta finilo de la kapo-sekcio alvenis. Sukcesa statusa linio ne igas la ceterajn kampojn malaperi.
  3. Ĉe sukcesa CONNECT-respondo, rigardu la bajton tuj post tiu finilo kiel komencon de tunelaj datumoj. Ĉe aliaj respondoj sekvu la taŭgan traktadon de HTTP-respondo kaj aŭtentigo.
  4. Transdonu la konekton kaj ĉiujn neuzitajn bajtojn tra la bufrita I/O-interfaco subtenata de la sekva protokolo.

La lasta paŝo gravas eĉ kun bona serĉado de limigilo. Bufrita leganto povas esti konsuminta pli da la soketo ol la analizilo petis. Komenci TLS sur la nuda soketo dum oni forlasas tiun leganton povas lasi bajtojn en la privata bufro de la leganto.

Uzu limdaton por la agordo kaj limon por la kapo-grando. EOF antaŭ la finilo estas nekompleta prokura respondo, ne invito atendi eterne aŭ tamen provi TLS.

Pripensu plurajn limojn

Imagu legadon, kiu finiĝas post Proxy-Agent:. La analizilo ankoraŭ bezonas pliajn HTTP-kapajn bajtojn. Imagu alian, kiu finiĝas duone en la fina CRLF-sekvenco. Tio ankoraŭ ne estas kompleta kapo-sekcio. Nun imagu kompletan sukcesan kapo-sekcion sekvatan de tunelaj bajtoj en la sama bufro: tiuj kromaj bajtoj devas travivi la transdonon.

407 estas alia rezulto. Ĝi bezonas aŭtentigan traktadon; ĝi ne rajtigas TLS ClientHello en tunelon, kiu neniam malfermiĝis.

Preferu prizorgatan konektilon, krom se efektivigi la manpremon estas la tasko. Ĉi tiu limo apartenas al la ĉi tie montrita HTTP/1-interŝanĝo. HTTP/2-prokuro portas CONNECT sur fluo kun alia kadrigo.

Rilataj artikoloj