డౌన్లోడ్ చేసిన ఫైల్ HTTP స్థితి పంక్తితో ప్రారంభమైనప్పుడు
ప్రాక్సీ సాకెట్ నుండి వచ్చిన ప్రతి బైట్ను అవుట్పుట్ ఫైల్లోకి కాపీ చేయడం బదులు HTTP ప్రతిస్పందన ఫ్రేమింగ్ను డౌన్లోడ్ చేసిన ఫైల్ వెలుపల ఉంచండి.
PDF లేదా స్ప్రెడ్షీట్ అనుకున్న ఫైల్ HTTP/1.1 200 OK తో ప్రారంభమైతే, డౌన్లోడర్ ఫైల్కు బదులు ముడి ప్రతిస్పందనను సేవ్ చేసింది. ఈ రేఖాచిత్ర ప్రతిస్పందనలో నాలుగు బైట్ల కంటెంట్ మాత్రమే ఉంది:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
4
DATA
0
ఫైల్ DATA. స్థితి పంక్తి, శీర్షికలు, పరిమాణ గుర్తు మరియు ముగింపు నిర్మాణం HTTP కి చెందుతాయి. శీర్షికల పొడవు మారుతుంది కాబట్టి స్థిర సంఖ్యలో బైట్లను తొలగించడం సురక్షితం కాదు. మొదటి ఖాళీ పంక్తి తర్వాత ప్రతిదీ కాపీ చేసినా ముక్కల ఫ్రేమింగ్ మిగిలిపోతుంది, సమాచార ప్రతిస్పందనలు తుది ప్రతిస్పందనకు ముందు రావచ్చు.
సాధారణ డౌన్లోడ్ కోసం, ముడి సాకెట్ నుండి ఫైల్కు కాపీ చేయడాన్ని HTTP క్లయింట్ యొక్క ప్రతిస్పందన-బాడీ ఇంటర్ఫేస్తో భర్తీ చేయండి. దాని ప్రాక్సీని కాన్ఫిగర్ చేయండి, తుది స్థితిని ధృవీకరించండి, ఆపై బాడీని తాత్కాలిక అవుట్పుట్కు స్ట్రీమ్ చేయండి. క్లయింట్ సందేశ ఫ్రేమింగ్ను నిర్వహిస్తుంది: పొడవు-పరిమిత, ముక్కలుగా (chunked) మరియు కనెక్షన్-పరిమిత బాడీలకు వేర్వేరు పార్సింగ్ అవసరం.
కంటెంట్ ఎన్కోడింగ్ మరో పొర. క్లయింట్ యొక్క డాక్యుమెంట్ చేసిన ప్రవర్తనను ఉపయోగించి, డీకోడ్ చేసిన ఫైల్ బైట్లు లేదా స్పష్టంగా అభ్యర్థించిన ముడి కంటెంట్ మీకు కావాలా నిర్ణయించండి. కుదించిన బైట్లు స్వయంచాలకంగా ప్రాక్సీ పాడైపోవడం కాదు.
అప్లికేషన్ సాకెట్-స్థాయి కోడ్ను ఉంచుకోవాల్సి వస్తే, ఆ పార్సింగ్ నియమాలన్నింటికీ మరియు చదవడం-రాయడం నిర్వహణకూ అదే బాధ్యత వహిస్తుంది. బఫర్ సామర్థ్యాన్ని కాదు, చదవడం నిజంగా తిరిగి ఇచ్చిన బైట్ల సంఖ్యను మాత్రమే రాయండి, పాక్షిక రాతలను నిర్వహించండి. లేకపోతే పాత బఫర్ కంటెంట్ సరిగ్గా సంగ్రహించిన బాడీని కూడా పాడు చేయగలదు.
HTTPS కి CONNECT ప్రతిస్పందనను తొలగించడం కంటే ఎక్కువ అవసరం: సొరంగం విజయవంతంగా ఏర్పడిన తర్వాత, గమ్యస్థాన TLS ను ఏర్పాటు చేసి, ఆపై లోపలి HTTP ప్రతిస్పందనను పార్స్ చేయండి. ప్రాక్సీ శీర్షికల తర్వాత వచ్చే ఎన్క్రిప్ట్ చేసిన బైట్లు డౌన్లోడ్ చేయదగిన ఫైల్ కాదు.
విఫలమైన లేదా అసంపూర్ణమైన అవుట్పుట్ను తాత్కాలిక పేరుతో ఉంచండి. బదిలీ మరియు ఫైల్ తనిఖీలు విజయవంతమైన తర్వాత మాత్రమే దాన్ని ప్రచురించండి; ఖాళీ కాని ఫైల్ పూర్తి డౌన్లోడ్ను నిరూపించదు.