PDF သို့မဟုတ် စာရင်းဇယားဟု ထင်ရသော ဖိုင်သည် HTTP/1.1 200 OK ဖြင့် စတင်ပါက ဒေါင်းလုပ်ဆွဲသူသည် ဖိုင်အစစ်အစား အကြမ်းတုံ့ပြန်ချက်ကို သိမ်းဆည်းခဲ့ခြင်းဖြစ်သည်။ ဤပုံစံတုံ့ပြန်ချက်တွင် အကြောင်းအရာ လေးခုသာ ပါဝင်သည်:

HTTP/1.1 200 OK
Transfer-Encoding: chunked

4
DATA
0

ဖိုင်အစစ်သည် DATA ဖြစ်သည်။ အခြေအနေလိုင်း၊ ခေါင်းစီးများ၊ အရွယ်အစားအမှတ်အသားနှင့် အဆုံးသတ်ဖွဲ့စည်းပုံတို့သည် HTTP ၏ အစိတ်အပိုင်းများဖြစ်သည်။ ခေါင်းစီးအရှည်များ ကွဲပြားသောကြောင့် byte အရေအတွက် ပုံသေဖယ်ရှားခြင်းသည် မလုံခြုံပါ။ ပထမ လိုင်းအလွတ်နောက်ပိုင်း အားလုံးကို ကူးယူသော်လည်း chunk ဘောင်ခတ်မှု ကျန်ရှိနေဆဲဖြစ်ပြီး သတင်းအချက်အလက်ဆိုင်ရာ တုံ့ပြန်ချက်များသည် နောက်ဆုံးတုံ့ပြန်ချက်မတိုင်မီ ရောက်နိုင်သည်။

ပုံမှန်ဒေါင်းလုပ်အတွက် အကြမ်း socket မှ ဖိုင်သို့ ကူးယူခြင်းကို HTTP client ၏ တုံ့ပြန်ချက် body မျက်နှာပြင်ဖြင့် အစားထိုးပါ။ ၎င်း၏ ပရောက်စီကို ပြင်ဆင်ပါ၊ နောက်ဆုံးအခြေအနေကို စစ်ဆေးပါ၊ ပြီးနောက် body ကို ယာယီ output သို့ stream လုပ်ပါ။ client သည် မက်ဆေ့ခ်ျဘောင်ခတ်မှုကို ကိုင်တွယ်သည်: အရှည်ဖြင့် သတ်မှတ်ထားသော၊ chunked နှင့် ချိတ်ဆက်မှုဖြင့် သတ်မှတ်ထားသော body များသည် မတူညီသော parsing လိုအပ်သည်။

အကြောင်းအရာ encoding သည် နောက်ထပ်အလွှာတစ်ခုဖြစ်သည်။ client ၏ မှတ်တမ်းတင်ထားသော အပြုအမူကို အသုံးပြု၍ decode လုပ်ထားသော ဖိုင် byte များ လိုအပ်သည် သို့မဟုတ် အတိအလင်း တောင်းဆိုထားသော အကြမ်းအကြောင်းအရာ လိုအပ်သည်ကို ဆုံးဖြတ်ပါ။ ချုံ့ထားသော byte များသည် အလိုအလျောက် ပရောက်စီပျက်စီးမှု မဟုတ်ပါ။

အပလီကေးရှင်းသည် socket အဆင့် code ကို ထိန်းသိမ်းထားရမည်ဆိုပါက ထို parsing စည်းမျဉ်းအားလုံးနှင့် ဖတ်ခြင်း၊ ရေးခြင်း ကိုင်တွယ်မှုအတွက် တာဝန်ရှိသည်။ buffer ၏ စွမ်းရည်မဟုတ်ဘဲ ဖတ်ခြင်းမှ အမှန်တကယ် ပြန်ပေးသော byte အရေအတွက်ကိုသာ ရေးပါ၊ တစ်စိတ်တစ်ပိုင်း ရေးခြင်းကို ကိုင်တွယ်ပါ။ သို့မဟုတ်ပါက ဟောင်းနေသော buffer အကြောင်းအရာသည် မှန်ကန်စွာ ထုတ်ယူထားသော body ကိုပင် ပျက်စီးစေနိုင်သည်။

HTTPS သည် CONNECT တုံ့ပြန်ချက်ကို ဖယ်ရှားရုံထက် ပိုလိုအပ်သည်: tunnel ကို အောင်မြင်စွာ တည်ထောင်ပြီးနောက် ဦးတည်ရာ TLS ကို တည်ထောင်ပါ၊ ထို့နောက် အတွင်းပိုင်း HTTP တုံ့ပြန်ချက်ကို parse လုပ်ပါ။ ပရောက်စီ၏ ခေါင်းစီးများနောက်ရှိ ကုဒ်ဝှက်ထားသော byte များသည် ဒေါင်းလုပ်ဆွဲနိုင်သော ဖိုင် မဟုတ်ပါ။

မအောင်မြင်သော သို့မဟုတ် မပြည့်စုံသော output ကို ယာယီအမည်အောက်တွင် ထားပါ။ လွှဲပြောင်းမှုနှင့် ဖိုင်စစ်ဆေးမှုများ အောင်မြင်ပြီးမှသာ ထုတ်ဝေပါ; ဗလာမဟုတ်သော ဖိုင်သည် ပြည့်စုံသော ဒေါင်းလုပ်ကို မသက်သေပါ။

ဆက်စပ်ဆောင်းပါးများ