Егер PDF немесе электрондық кесте деп есептелген файл HTTP/1.1 200 OK-мен басталса, жүктеуші файлдың орнына шикі жауапты сақтаған. Бұл схемалық жауапта төрт байт қана мазмұн бар:

HTTP/1.1 200 OK
Transfer-Encoding: chunked

4
DATA
0

Файл — DATA. Күй жолы, тақырыптар, өлшем белгісі және аяқтау құрылымы HTTP-ге тиесілі. Тұрақты байт санын жою қауіпсіз емес, өйткені тақырыптардың ұзындығы әртүрлі. Бірінші бос жолдан кейінгінің бәрін көшіру бөлшектер қаңқасын қалдырады, ал ақпараттық жауаптар түпкілікті жауаптан бұрын келуі мүмкін.

Қалыпты жүктеу үшін шикі сокеттен файлға көшіруді HTTP клиентінің жауап денесінің интерфейсімен ауыстырыңыз. Оның проксиін конфигурациялаңыз, түпкілікті күйді тексеріңіз және денені уақытша шығысқа ағызыңыз. Клиент хабарлама қаңқасын басқарады: ұзындықпен, бөлшектермен және қосылыммен шектелген денелер әртүрлі талдауды қажет етеді.

Мазмұнды кодтау — тағы бір қабат. Клиенттің құжатталған әрекетіне сүйене отырып, сізге декодталған файл байттары керек пе әлде анық сұралған шикі мазмұн керек пе, соны шешіңіз. Сығылған байттар автоматты түрде прокси бүлінуі емес.

Егер қолданба сокет деңгейіндегі кодты сақтауға міндетті болса, ол барлық осы талдау ережелерін, сондай-ақ оқу мен жазуды өңдеуді өзі иеленеді. Оқу шынымен қайтарған байт санын ғана жазыңыз, буфер сыйымдылығын емес, және ішінара жазуларды өңдеңіз. Әйтпесе ескірген буфер мазмұны дұрыс шығарылған денені де бүлдіруі мүмкін.

HTTPS CONNECT жауабын аршудан көбірек қажет етеді: туннель сәтті орнатылғаннан кейін мақсаттың TLS-ін орнатыңыз, содан кейін ішкі HTTP жауабын талдаңыз. Прокси тақырыптарынан кейінгі шифрланған байттар жүктелетін файл емес.

Сәтсіз немесе толық емес шығысты уақытша атпен қалдырыңыз. Оны тек тасымалдау және файл тексерулері сәтті болғаннан кейін жариялаңыз; бос емес файл толық жүктеуді дәлелдемейді.

Қатысты мақалалар