CORS မူဝါဒကို နားလည်ခြင်းနှင့် စစ်ဆေးခြင်း
Cross-Origin Resource Sharing (CORS) သည် ဝဘ်ဘရောက်ဆာများအတွင်း မတူညီသော origin များအကြား အရင်းအမြစ်များ တောင်းဆိုခွင့်ကို ထိန်းချုပ်သည့် လုံခြုံရေးစနစ်တစ်ခုဖြစ်သည်။ CORS စစ်ဆေးခြင်း။ သည် သင်ပေးပို့လိုက်သော HTTP တုံ့ပြန်မှု ခေါင်းစီးများ နှင့် တောင်းဆိုမှုအသေးစိတ်အချက်အလက်များအပေါ် မူတည်၍ ဘရောက်ဆာတစ်ခုက အဆိုပါ cross-origin တောင်းဆိုမှုကို ခွင့်ပြုမည် သို့မဟုတ် ပိတ်ဆို့မည်ကို စစ်ဆေးပေးသည်။
ဤကိရိယာသည် ဆာဗာသို့ တိုက်ရိုက်ချိတ်ဆက်ခြင်း၊ URL များအား ဖတ်ရှုခြင်း၊ ကွက်ကီးများ သတ်မှတ်ခြင်း သို့မဟုတ် DNS/TLS စနစ်များကို စစ်ဆေးခြင်းတို့ကို လုပ်ဆောင်ခြင်းမရှိပါ။ ၎င်းသည် သင်ထည့်သွင်းပေးလိုက်သော အချက်အလက်များကိုသာ အခြေခံ၍ ဘရောက်ဆာ၏ CORS ဆုံးဖြတ်ချက်ကို တွက်ချက်ပေးခြင်းဖြစ်သည်။
ထည့်သွင်းရမည့် အချက်အလက်များနှင့် ကန့်သတ်ချက်များ
CORS စစ်ဆေးမှုကို တိကျစွာ လုပ်ဆောင်နိုင်ရန် အောက်ပါအချက်အလက်များကို ထည့်သွင်းပေးရမည်ဖြစ်သည်။
- စစ်ဆေးရန် တုံ့ပြန်ခြင်း: "တကယ့်တုံ့ပြန်မှု" သို့မဟုတ် "အကြိုတုံ့ပြန်မှု" ကို ရွေးချယ်ပါ။
- HTTP တုံ့ပြန်မှု ခေါင်းစီးများ: ဆာဗာမှ ပြန်လည်ပေးပို့သော ခေါင်းစီးများကို ကူးထည့်ရပါမည်။ အကြိုတုံ့ပြန်မှုကို စစ်ဆေးမည်ဆိုပါက status line ကိုပါ ထည့်သွင်းရန် လိုအပ်သည်။ ဤအကွက်သည် အများဆုံး စာလုံးရေ ၂၀၀,၀၀၀ အထိသာ လက်ခံသည်။ အကယ်၍ ဘာမျှမထည့်ဘဲ စစ်ဆေးပါက "မစစ်ဆေးမီ HTTP တုံ့ပြန်မှု ခေါင်းစီးများကို ကူးထည့်ပါ။" ဟူသော အမှားပြစာသား ပေါ်လာမည်ဖြစ်ပြီး၊ စာလုံးရေကျော်လွန်ပါက "ဤတုံ့ပြန်မှုသည် ထူးထူးခြားခြား ကြီးမားသည်။
‹max›စာလုံးများအောက်တွင် ၎င်းကို သိမ်းဆည်းပါ။" ဟု ပြသမည်ဖြစ်သည်။ လိုင်းတစ်ခုသည် မှားယွင်းနေပါက "လိုင်း‹line›သည် တရားဝင် HTTP ခေါင်းစီး သို့မဟုတ် အခြေအနေလိုင်းမဟုတ်ပါ။" သို့မဟုတ် "လိုင်း‹line›တွင် မမှန်ကန်သော HTTP ခေါင်းစီးအမည်ပါရှိသည်။" ဟူသော အမှားများကို ပြသသည်။ - မူရင်းကို တောင်းဆိုပါ။: တောင်းဆိုမှုပြုလုပ်မည့် scheme၊ host နှင့် optional port တို့ပါဝင်သော origin ကို ထည့်သွင်းပါ (ဥပမာ-
https://app.example.com)။ URL path၊ query သို့မဟုတ် credentials များ မပါဝင်ရပါ။ မှားယွင်းပါက "https://app.example.com ကဲ့သို့သော အစီအစဉ်၊ လက်ခံဆောင်ရွက်ပေးခြင်းနှင့် ရွေးချယ်နိုင်သော ပို့တ်တစ်ခုသာ မူရင်းတစ်ခုကို ထည့်သွင်းပါ။" ဟု ပြသမည်ဖြစ်သည်။ - တောင်းဆိုထားသောနည်းလမ်း: အသုံးပြုမည့် HTTP method ကို ထည့်သွင်းပါ။ မှားယွင်းပါက "မှန်ကန်သော HTTP နည်းလမ်း တိုကင်ကို ထည့်ပါ။" ဟု ပြသပြီး၊ fetch တောင်းဆိုမှုများတွင် ခွင့်မပြုသော နည်းလမ်းဖြစ်ပါက "ဘရောက်ဆာများသည် fetch တောင်းဆိုမှုများတွင်
‹method›နည်းလမ်းကို ခွင့်မပြုပါ။" ဟု ပြသမည်ဖြစ်သည်။ - ခေါင်းစီးအမည်များကို တောင်းဆိုထားသည်:
Access-Control-Request-Headersတွင် ပါဝင်မည့် ခေါင်းစီးအမည်များကို ကော်မာ သို့မဟုတ် စာကြောင်းအသစ်များဖြင့် ခွဲခြားထည့်သွင်းပါ (ဥပမာ-Content-Type၊ Authorization)။ မှားယွင်းပါက “‹header›” သည် တရားဝင် HTTP တောင်းဆိုချက် ခေါင်းစီးအမည်မဟုတ်ပါ။" ဟု ပြသမည်ဖြစ်သည်။ - အထောက်အထားများ ထည့်သွင်းပါ။: ကွက်ကီးများ သို့မဟုတ် HTTP authentication များ ပါဝင်ပါက ဤ toggle ကို ဖွင့်ပေးရမည်။
ထည့်သွင်းမှုများတွင် ပြဿနာရှိနေပါက "မီးမောင်းထိုးပြထားသည့် ထည့်သွင်းမှုကို ပြင်ဆင်ပြီး ထပ်စမ်းကြည့်ပါ။" ဟူသော အမှားစာသားကို ပြသမည်ဖြစ်သည်။
ဘရောက်ဆာ၏ ဆုံးဖြတ်ချက် ရလဒ်များ
အချက်အလက်များ ထည့်သွင်းပြီးနောက် ကိရိယာသည် အောက်ပါ Browser ဆုံးဖြတ်ချက် ရလဒ်များထဲမှ တစ်ခုကို ပြသပေးမည်ဖြစ်သည်။
- ၎င်း၏ CORS မူဝါဒကို စစ်ဆေးရန် တုံ့ပြန်ချက်ကို ကူးထည့်ပါ။: ကနဦးအခြေအနေတွင် ပြသသည်။
- တုံ့ပြန်မှုနှင့် တောင်းဆိုမှုအသေးစိတ်အချက်အလက်များကို ထည့်သွင်းပါ၊ ထို့နောက် CORS မူဝါဒကို စစ်ဆေးပါ။: အချက်အလက်များ မပြည့်စုံသေးသည့် အခြေအနေတွင် ပြသသည်။
- ကူးထည့်ထားသည့် CORS တုံ့ပြန်မှုဖြင့် ခွင့်ပြုထားသည်။: ဘရောက်ဆာက တောင်းဆိုမှုကို ခွင့်ပြုသည့် အခြေအနေဖြစ်သည်။
- ကူးထည့်ထားသော CORS တုံ့ပြန်မှုဖြင့် ပိတ်ထားသည်။: ဘရောက်ဆာက တောင်းဆိုမှုကို ပိတ်ဆို့သည့် အခြေအနေဖြစ်သည်။
- ခေါင်းစီးများ ကျော်သွားသော်လည်း ကြိုတင်ပျံသန်းမှု အခြေအနေကို မသိရပါ။: ခေါင်းစီးများ ကိုက်ညီသော်လည်း preflight status ကို အတည်မပြုနိုင်သည့် အခြေအနေဖြစ်သည်။
CORS စည်းမျဉ်းများနှင့် အထူးကိစ္စရပ်များ
CORS မူဝါဒကို စစ်ဆေးရာတွင် အောက်ပါ တင်းကျပ်သော စည်းမျဉ်းများနှင့် အထူးကိစ္စရပ်များကို ထည့်သွင်းစဉ်းစားသည်။
- အထောက်အထားများ (Credentials) ပါဝင်ခြင်း: တောင်းဆိုမှုတွင် အထောက်အထားများ ပါဝင်ပါက
Access-Control-Allow-Originသည် wildcard*မဖြစ်နိုင်ပါ။ ၎င်းသည် တောင်းဆိုထားသော origin နှင့် အတိအကျ ကိုက်ညီရမည်ဖြစ်ပြီးAccess-Control-Allow-Credentialsသည်လည်းtrueအတိအကျ ဖြစ်ရမည်။ ထို့အပြင် အထောက်အထားများ ပါဝင်နေပါက ခွင့်ပြုထားသော နည်းလမ်းများနှင့် ခေါင်းစီးများအတွက် wildcard*သင်္ကေတများသည် ၎င်းတို့၏ wildcard အဓိပ္ပာယ်ကို ဆုံးရှုံးစေသည်။ - Wildcard
*အသုံးပြုမှု: အထောက်အထားများ မပါဝင်ပါကAccess-Control-Allow-Methodsနှင့်Access-Control-Allow-Headersတို့တွင်*ကို သုံးနိုင်သည်။ သို့သော်Authorizationခေါင်းစီးအတွက်မူAccess-Control-Allow-Headers: *ရှိနေစေကာမူ ၎င်းကို အတိအလင်း ဖော်ပြပေးရန် လိုအပ်သည်။ - တန်ဖိုးမမှန်ကန်မှုများ:
Access-Control-Allow-Originတွင် တန်ဖိုးများစွာ ပါဝင်နေခြင်း သို့မဟုတ် ကော်မာဖြင့် ခွဲခြားထားခြင်းများ ရှိနေပါက ၎င်းကို မမှန်ကန်သော တန်ဖိုးအဖြစ် သတ်မှတ်သည်။ - Preflight Status: အကြိုတုံ့ပြန်မှု တွင် HTTP status line မပါဝင်ပါက ရလဒ်ကို အတည်မပြုနိုင်သော "indeterminate" အဖြစ် သတ်မှတ်သည်။ အောင်မြင်သော preflight ဖြစ်ရန် 2xx status code ရှိရန် လိုအပ်သည်။
ကိုယ်ရေးအချက်အလက် လုံခြုံမှုနှင့် လုပ်ဆောင်ပုံ
သင်၏ ခေါင်းစီးများနှင့် တောင်းဆိုချက်အသေးစိတ်များသည် သင့်ဘရောက်ဆာတွင် ရှိနေပါသည်။ BroBroGo မှ မည်သည့်အရာကိုမျှ အပ်လုဒ်လုပ်ခြင်း သို့မဟုတ် သိမ်းဆည်းထားခြင်းမရှိပါ။ လုပ်ဆောင်ချက်အားလုံးသည် သင့်စက်တွင်းရှိ ဘရောက်ဆာထဲတွင်သာ တိုက်ရိုက်အလုပ်လုပ်ခြင်းဖြစ်သည်။
မကြာခဏမေးလေ့ရှိသော မေးခွန်းများ (FAQ)
အမှန်တကယ်တုံ့ပြန်မှု သို့မဟုတ် အကြိုတုံ့ပြန်မှုကို ကူးထည့်သင့်ပါသလား။
ဘရောက်ဆာကုဒ်သည် တုံ့ပြန်မှုတစ်ခုအား ဖတ်နိုင်သည်ရှိမရှိ စစ်ဆေးရန် အမှန်တကယ်တုံ့ပြန်မှုကို အသုံးပြုပါ။ နောက်ပိုင်းနည်းလမ်းနှင့် ၎င်း၏တောင်းဆိုထားသော ခေါင်းစီးအမည်များကို အတည်ပြုသည့် OPTIONS ပြန်ကြားမှုအတွက် Preflight တုံ့ပြန်မှုကို အသုံးပြုပါ။
ခရင်မ်ကတ်သည် အထောက်အထားများနှင့် အဘယ်ကြောင့်ပျက်ကွက်နိုင်သနည်း။
ကွက်ကီးများ သို့မဟုတ် HTTP စစ်မှန်ကြောင်းအထောက်အထားပြခြင်း ပါ၀င်သောအခါ၊ ခွင့်ပြုထားသောမူရင်းသည် တောင်းဆိုထားသော မူရင်းဇာစ်မြစ်နှင့် အတိအကျကိုက်ညီရပါမည်။ ခွင့်ပြုထားသော နည်းလမ်းများနှင့် ခေါင်းစီးများအတွက် သင်္ကေတများသည် ၎င်းတို့၏ သင်္ကေတ အဓိပ္ပါယ်ကို ဆုံးရှုံးစေပါသည်။
တိုက်ရိုက်တောင်းဆိုမှု အောင်မြင်ကြောင်း ရလဒ်က သက်သေပြပါသလား။
နံပါတ်၊ ဤရလဒ်သည် ကူးထည့်ထားသော တုံ့ပြန်မှုနှင့် ဤနေရာတွင် ထည့်သွင်းထားသော တောင်းဆိုချက်အသေးစိတ်များကိုသာ အကျုံးဝင်ပါသည်။ ပြန်ညွှန်းမှုများ၊ ကက်ရှ်ထားသည့် တုံ့ပြန်မှုများ၊ ဆာဗာစည်းမျဉ်းများ ပြောင်းလဲခြင်း၊ ဘရောက်ဆာ တိုးချဲ့မှုများနှင့် အကြိုပျံသန်းပြီးနောက် အမှန်တကယ် တုံ့ပြန်မှုသည် ရလဒ်ကို ပြောင်းလဲနိုင်သေးသည်။