ఫార్వర్డ్ ప్రాక్సీ అభ్యర్థన లైన్ మరియు హెడర్‌లను చదివి, వాటిని పంపి, ఆపై selectలో POST బాడీ కోసం వేచి ఉంటుంది. క్లయింట్ దానిని ఇప్పటికే పంపింది. రెండు వైపులా ఒకదానికొకటి వేచి ఉన్నట్లు కనిపిస్తుంది.

Python యొక్క BaseHTTPRequestHandlerలో, హెడర్‌లను చదవడం rfile ద్వారా జరుగుతుంది, ఇది బఫర్ చేసిన ఇన్‌పుట్ స్ట్రీమ్. ఆ స్ట్రీమ్ ముందుకు చదవగలదు మరియు బాడీకి చెందిన బైట్లను ఉంచుకోగలదు. అంతర్లీన socketపై వేచి ఉండటం దాని ఫైల్ డిస్క్రిప్టర్ సిద్ధంగా ఉందా అని మాత్రమే అడుగుతుంది; Python స్ట్రీమ్‌లో ఇప్పటికే ఉపయోగించదగిన డేటా ఉందా అని అడగదు.

హెడర్‌లను చదివిన బఫర్‌ను అనుసరించండి

బాడీని కూడా self.rfile ద్వారా చదవండి. బఫర్ చేసిన స్ట్రీమ్‌తో హెడర్‌లను పార్స్ చేసిన తర్వాత self.connection.recv కు మారకండి. లేకపోతే ఆ స్ట్రీమ్ ఉంచుకున్న బైట్లను దాటవేసి, మళ్లీ ఎప్పటికీ పంపబడని డేటా కోసం కోడ్ వేచి ఉండవచ్చు.

rfileనే selectకు ఇవ్వడం వల్ల select దాని Python బఫర్‌ను పరిశీలించదు. సంసిద్ధత API వస్తువు యొక్క ఫైల్ డిస్క్రిప్టర్ ద్వారా పనిచేస్తుంది.

ఒక చెల్లుబాటు అయిన Content-Length ఉన్న మరియు Transfer-Encoding లేని అభ్యర్థన కోసం, ప్రకటించిన బైట్ల సంఖ్యను ఖచ్చితంగా వినియోగించండి, ఇన్‌పుట్ అకాల ముగింపు మరియు మీ పరిమాణ, సమయ పరిమితులను నిర్వహించండి. EOF వరకు చదవకండి: నిరంతర కనెక్షన్ ఉపయోగించే క్లయింట్ అభ్యర్థన ముగిసిన తర్వాత కూడా కనెక్షన్‌ను తెరిచి ఉంచవచ్చు.

ఫ్రేమింగ్‌ను ప్రాక్సీ యొక్క స్పష్టమైన భాగం చేయండి

ఛంక్ చేసిన అభ్యర్థన బాడీలకు ఛంక్ చేసిన ఫ్రేమింగ్ మద్దతు అవసరం. లేని Content-Length కోసం వెతికి వాటిని చదవలేరు. అస్పష్టమైన పొడవు మెటాడేటాకు సౌకర్యవంతంగా అనిపించే హెడర్‌ను ఎంచుకోవడం బదులు నిర్వచిత తిరస్కరణ మార్గం అవసరం.

బ్లాకింగ్ handler పరిమిత చదవడాలతో తన స్ట్రీమ్ ఇంటర్‌ఫేస్‌ను కొనసాగించవచ్చు. ఈవెంట్-నడిచే ప్రాక్సీకి పార్సర్ యొక్క ముందస్తు పఠనాన్ని సంసిద్ధత నిర్వహణతో అనుసంధానించే బఫర్ నమూనా అవసరం. టైమౌట్ మార్చడం ఒకే socket యొక్క రెండు స్వతంత్ర వినియోగదారులను సమన్వయపరచదు.

ఈ నిర్ధారణ లోపలికి వచ్చే బైట్లు ఎక్కడ ఉంచబడతాయనే దానికి ప్రత్యేకం. ప్రాక్సీ సరైన బాడీని వినియోగించిన తర్వాత కూడా ఆ బాడీని స్థిరమైన HTTP ఫ్రేమింగ్‌తో పంపాలి. ప్రామాణిక http.server handler యంత్రాంగాన్ని అర్థం చేసుకోవడానికి ఉపయోగకరమైన ప్రదేశం, కానీ అది ఉత్పత్తి ఫార్వర్డ్-ప్రాక్సీ అమలు కాదు.

సంబంధిత వ్యాసాలు