CORS አረጋጋጭ

የተለጠፈ ምላሽ የተወሰነ የአሳሽ ምንጭ፣ ዘዴ እና የጥያቄ ራስጌ የሚፈቅድ መሆኑን ያረጋግጡ።

ለመፈተሽ ምላሽ
የቅድመ በረራ ምላሽ ሲፈተሽ የሁኔታ መስመሩንም ለጥፍ።
በመነሻ ርዕስ ውስጥ የተላከው እቅድ፣ አስተናጋጅ እና አማራጭ ወደብ።
ኩኪዎችን ወይም HTTP ማረጋገጥን ያካተቱ ጥያቄዎችን ያብሩ።
የአሳሽ ውሳኔ

    የተተነተነ የመዳረሻ መቆጣጠሪያ መስኮች

    HTTP status
    Access-Control-Allow-Origin
    Access-Control-Allow-Credentials
    Access-Control-Allow-Methods
    Access-Control-Allow-Headers
    Access-Control-Expose-Headers
    Access-Control-Max-Age

    ምላሽ ያስገቡ እና ዝርዝሮችን ይጠይቁ፣ ከዚያ የCORS ፖሊሲን ያረጋግጡ።

    የCORS ፖሊሲውን ለመፈተሽ ምላሹን ለጥፍ።

    የእርስዎ ራስጌዎች እና የጥያቄ ዝርዝሮች በአሳሽዎ ውስጥ ይቆያሉ። በBroBroGo ምንም አልተሰቀለም ወይም አልተቀመጠም።

    በተደጋጋሚ የሚነሱ ጥያቄዎች

    ትክክለኛውን ምላሽ ወይም የቅድመ በረራ ምላሽን መለጠፍ አለብኝ?

    የአሳሽ ኮድ አንድ ምላሽ ማንበብ መቻሉን ለማረጋገጥ ትክክለኛ ምላሽን ይጠቀሙ። ለOPTIONS ምላሽ የኋለኛውን ዘዴ እና የተጠየቀውን የራስጌ ስሞችን ለሚቀበለው የቅድመ በረራ ምላሽ ተጠቀም።

    ለምንድነው አንድ ምልክት ከማስረጃዎች ጋር የማይሳካው?

    ኩኪዎች ወይም የኤችቲቲፒ ማረጋገጫ ሲካተቱ፣ የተፈቀደው መነሻ ከጠያቂው ምንጭ ጋር በትክክል መዛመድ አለበት። ለተፈቀደላቸው ዘዴዎች እና ራስጌዎች ዋይልድ ካርዶች እንዲሁ የዱር ምልክት ትርጉማቸውን ያጣሉ።

    የማለፊያ ውጤት የቀጥታ ጥያቄው እንደሚሰራ ያረጋግጣል?

    አይ ይህ ውጤት የሚሸፍነው የተለጠፈውን ምላሽ እና እዚህ የገባውን የጥያቄ ዝርዝሮችን ብቻ ነው። ማዘዋወር፣ የተሸጎጡ ምላሾች፣ የአገልጋይ ደንቦችን መቀየር፣ የአሳሽ ቅጥያዎች እና ከቅድመ በረራ በኋላ ያለው ትክክለኛ ምላሽ አሁንም ውጤቱን ሊለውጠው ይችላል።

    የ CORS አረጋጋጭ አገልግሎት ጥቅምና አስፈላጊነት

    የ CORS አረጋጋጭ የድር አሳሽ እርስዎ በሚያቀርቡት የኤችቲቲፒ ምላሽ ራስጌዎች እና በጥያቄዎ ዝርዝሮች ላይ በመመስረት የተወሰነ የጋራ መነሻ ጥያቄን (cross-origin request) የሚፈቅድ መሆኑን ለመረዳት የሚረዳ መሣሪያ ነው። ይህ መሣሪያ የፊት-ለፊት አልሚዎች (front-end developers)፣ የጀርባ-አልሚዎች (back-end developers)፣ የኤፒአይ ፕላትፎርም አልሚዎች (API platform developers)፣ የኦፕሬሽንስ አልሚዎች (operations developers) እና የአሳሽ ኮድ የተወሰነ ምላሽን ማንበብ መቻሉን ለማረጋገጥ ለሚፈልግ ለማንኛውም ሰው ጠቃሚ አገልግሎት ይሰጣል። በተጨማሪም የ OPTIONS ምላሽ የኋለኛውን ዘዴ እና የተጠየቀውን የራስጌ ስሞችን የሚቀበል መሆኑን ለማረጋገጥ ለሚፈልጉ ወገኖች ከፍተኛ እገዛ ያደርጋል።

    ይህ መሣሪያ የሚሠራው እርስዎ ያቀረቡትን የምላሽ ራስጌዎች እና የጥያቄ ዝርዝሮች ብቻ በመፈተሽ ነው። መሣሪያው አገልጋይን አያነጋግርም፣ ዩአርኤሎችን አያነብም፣ ኩኪዎችን አያዘጋጅም፣ የዲኤንኤስ/ቲኤልኤስ (DNS/TLS) ሁኔታዎችን አያረጋግጥም ወይም የአገልጋይ ውቅረቶችን አይቀይርም።

    ለመሣሪያው የሚገቡ መረጃዎች (Inputs)

    የ CORS ፖሊሲን ለመፈተሽ መሣሪያው የሚከተሉትን ግብዓቶች ይፈልጋል፦

    • ለመፈተሽ ምላሽ: በ"ትክክለኛ ምላሽ" ወይም "የቅድመ በረራ ምላሽ" መካከል የሚደረግ ምርጫ።
    • የኤችቲቲፒ ምላሽ ራስጌዎች: የኤችቲቲፒ ምላሽ ራስጌዎችን ለማስገባት የሚያገለግል የጽሑፍ ሳጥን ሲሆን ለቅድመ በረራ ምላሾች የሁኔታ መስመሩንም ማካተት አለበት። የዚህ ግብዓት ከፍተኛው ርዝመት 200,000 ቁምፊዎች ነው። ባዶ ግብዓት ሲኖር "ከማጣራትዎ በፊት የኤችቲቲፒ ምላሽ ራስጌዎችን ለጥፍ።" የሚል የስህተት መልእክት ይታያል። ግብዓቱ ከተፈቀደው በላይ ትልቅ ከሆነ "ይህ ምላሽ ባልተለመደ ሁኔታ ትልቅ ነው። በ‹max› ቁምፊዎች ስር ያቆዩት።" የሚል ማስጠንቀቂያ ይሰጣል። እንዲሁም ልክ ያልሆነ የራስጌ መስመር ሲኖር "መስመር ‹line› የሚሰራ የኤችቲቲፒ ራስጌ ወይም የሁኔታ መስመር አይደለም።" የሚል እና ልክ ያልሆነ የራስጌ ስም ሲኖር "መስመር ‹line› ልክ ያልሆነ የኤችቲቲፒ አርዕስት ስም ይዟል።" የሚል የስህተት መልእክት ይወጣል።
    • መነሻ ጠይቅ: የጥያቄውን እቅድ (scheme)፣ አስተናጋጅ (host) እና አማራጭ ወደብ (optional port) የያዘ የጽሑፍ ግብዓት ነው (ለምሳሌ፡ https://app.example.com)። ይህ ግብዓት ንጹህ መነሻ ወይም null መሆን አለበት፤ የዩአርኤል መንገድን (URL path)፣ መጠይቅን (query) ወይም ምስክርነቶችን መያዝ አይፈቅድም። ህግን ያልጠበቀ መነሻ ሲገባ "መነሻውን እንደ https://app.example.com ያለ እቅድ፣ አስተናጋጅ እና አማራጭ ወደብ ብቻ ያስገቡ።" የሚል ስህተት ያሳያል።
    • የተጠየቀ ዘዴ: ለኤችቲቲፒ ዘዴ (HTTP method) የሚሆን የጽሑፍ ግብዓት ነው። ልክ ያልሆነ ዘዴ ሲገባ "የሚሰራ የኤችቲቲፒ ዘዴ ማስመሰያ አስገባ።" የሚል ስህተት የሚታይ ሲሆን፣ የተከለከለ ዘዴ ሲሆን ደግሞ "አሳሾች የ‹method› ዘዴን በfetch ጥያቄዎች ውስጥ አይፈቅዱም።" የሚል መልእክት ያሳያል።
    • የተጠየቁ የራስጌ ስሞች: ከ Access-Control-Request-Headers የተገኙ፣ በነጠላ ሰረዝ ወይም በመስመሮች የተለዩ የራስጌ ስሞች ማስገቢያ ነው። ልክ ያልሆነ የጥያቄ ራስጌ ሲገባ ""‹header›" ትክክለኛ የኤችቲቲፒ ጥያቄ ራስጌ ስም አይደለም።" የሚል ስህተት ያሳያል።
    • ምስክርነቶችን ያካትቱ: ጥያቄው ኩኪዎችን ወይም የኤችቲቲፒ ማረጋገጫን (HTTP authentication) የሚያካትት መሆኑን ለማመልከት የሚያገለግል ማብሪያ/ማጥፊያ (toggle) ነው።

    በአጠቃላይ በግብዓቶች ላይ ችግር ካለ "የደመቀውን ግቤት ያስተካክሉ እና እንደገና ይሞክሩ።" የሚል መልእክት ይወጣል።

    ከመሣሪያው የሚወጡ ውጤቶች (Outputs)

    መሣሪያው ግብዓቶችን ከመረመረ በኋላ የሚከተሉትን ውጤቶች ያሳያል፦

    የአሳሽ ውሳኔ

    • መጀመሪያ ላይ ምንም ግብዓት ሳይኖር ሲቀር "የCORS ፖሊሲውን ለመፈተሽ ምላሹን ለጥፍ።" የሚል ሁኔታ ይታያል።
    • ምንም ግብዓት ሳይሰጥ ፍተሻ ሲደረግ "ምላሽ ያስገቡ እና ዝርዝሮችን ይጠይቁ፣ ከዚያ የCORS ፖሊሲን ያረጋግጡ።" የሚል መልእክት ይወጣል።
    • ጥያቄው በተሳካ ሁኔታ ሲፈቀድ "በተለጠፈው CORS ምላሽ ተፈቅዷል።" የሚል ውሳኔ ይሰጣል።
    • ጥያቄው ሲከለከል "በተለጠፈው CORS ምላሽ ታግዷል።" የሚል ውሳኔ ይወጣል።
    • ራስጌዎቹ አልፈው ነገር ግን የቅድመ በረራ ሁኔታው ካልታወቀ "ራስጌዎች ያልፋሉ፣ ነገር ግን የቅድመ በረራ ሁኔታው ​​አይታወቅም።" የሚል ውሳኔ ይሰጣል።

    የተተነተነ የመዳረሻ መቆጣጠሪያ መስኮች

    ይህ ክፍል የተተነተኑትን የ Access-Control-* መስኮች ያሳያል።

    ለውሳኔው የሚሰጡ ምክንያቶች (Reasons for decision)

    መሣሪያው ለደረሰበት ውሳኔ የሚከተሉትን ዝርዝር ምክንያቶች ሊያቀርብ ይችላል፦

    • የመነሻ ምክንያቶች:
      • "Access-Control-Allow-Origin በትክክል ከ‹origin› ጋር ይዛመዳል።"
      • "Access-Control-Allow-Origin ለዚህ ጥያቄ ማንኛውንም መነሻ ይፈቅዳል።"
      • "Access-Control-Allow-Origin ጠፍቷል።"
      • "ምስክርነቶች ሲካተቱ Access-Control-Allow-Origin * መሆን አይችልም።"
      • "Access-Control-Allow-Origin ‹actual› ነው እንጂ ‹expected› አይደለም።"
      • "Access-Control-Allow-Origin ልክ ያልሆነ እሴት አለው፡ ‹value›።"
    • የምስክርነት ምክንያቶች:
      • "Access-Control-Allow-Credentials በትክክል እውነት ነው።"
      • "የተረጋገጠ ጥያቄ Access-Control-Allow-Credentials ያስፈልገዋል፡ እውነት።"
      • "ምስክርነቶች አልተካተቱም, ስለዚህ Access-Control-Allow-Credentials በዚህ ውሳኔ ላይ ተጽዕኖ የለውም."
    • የቅድመ በረራ ሁኔታ ምክንያቶች:
      • "የቅድመ በረራ ሁኔታ ‹status› ስኬታማ ነው።"
      • "የቅድመ በረራ ሁኔታ ‹status› የተሳካ 2xx ሁኔታ አይደለም።"
      • "ምንም የኤችቲቲፒ ሁኔታ መስመር አልተለጠፈም፣ ስለዚህ የሚፈለገው 2xx ቅድመ በረራ ሁኔታ ሊረጋገጥ አይችልም።"
    • የዘዴ ምክንያቶች:
      • "ቅድመ በረራው ‹method› ይፈቅዳል።"
      • "‹method› CORS ደህንነቱ የተጠበቀ ዘዴ ነው እና በAccess-Control-Allow-Methods ውስጥ መታየት አያስፈልገውም።"
      • "Access-Control-Allow-Methods ‹method› አይፈቅድም።"
    • የራስጌ ምክንያቶች:
      • "ምንም የተጠየቀ የራስጌ ስሞች የቅድመ በረራ ማጽደቅ አያስፈልጋቸውም።"
      • "ቅድመ በረራው የተጠየቁትን የራስጌ ስሞች ይፈቅዳል፡- ‹headers›።"
      • "Access-Control-Allow-Headers: * ያለ ምስክርነቶች እነዚህን ስሞች ይሸፍናል: ‹headers›."
      • "Access-Control-Allow-Headers አይፈቅድም: ‹headers›."
      • "Authorization በግልጽ መዘርዘር አለበት; Access-Control-Allow-Headers: * አይሸፍነውም."

    የ CORS ደንቦች እና ልዩ ሁኔታዎች

    የ CORS ፖሊሲን በሚገመግሙበት ጊዜ የሚከተሉትን ወሳኝ ህጎች እና ልዩ ሁኔታዎች ግምት ውስጥ ማስገባት ያስፈልጋል፦

    1. የምስክርነቶች ተፅዕኖ: ጥያቄው ምስክርነቶችን (cookies ወይም HTTP authentication) የሚያካትት ከሆነ፣ Access-Control-Allow-Origin ዋጋ * (wildcard) መሆን አይችልም። በተጨማሪም ምስክርነቶች በሚኖሩበት ጊዜ ለተፈቀዱ ዘዴዎች እና ራስጌዎች የሚቀመጡ የዋይልድ ካርድ ምልክቶች የዱር ምልክት ትርጉማቸውን ያጣሉ።
    2. የምስክርነት ማረጋገጫ: ምስክርነቶችን ለሚያካትቱ ጥያቄዎች Access-Control-Allow-Credentials በትክክል true መሆን አለበት።
    3. የመነሻ ዋጋዎች: Access-Control-Allow-Origin ብዙ እሴቶችን ከያዘ ወይም በነጠላ ሰረዝ የተለየ ከሆነ እንደ ልክ ያልሆነ ይቆጠራል።
    4. የዋይልድ ካርድ አጠቃቀም: ምንም ምስክርነቶች ካልተካተቱ፣ ከ Authorization በስተቀር ለሌሎች ራስጌዎች እና ዘዴዎች *Access-Control-Allow-Methods እና Access-Control-Allow-Headers ውስጥ መጠቀም ይቻላል።
    5. የ Authorization ራስጌ ልዩ ሁኔታ: Access-Control-Allow-Headers: * ቢኖርም እንኳ፣ Authorization ራስጌ በ Access-Control-Allow-Headers ውስጥ በግልጽ መዘርዘር አለበት።
    6. የቅድመ በረራ ሁኔታ መስመር: የቅድመ በረራ ምላሽ የኤችቲቲፒ ሁኔታ መስመርን (HTTP status line) የማያካትት ከሆነ፣ የቅድመ በረራ ፍተሻው ውጤት "ያልታወቀ" (indeterminate) ይሆናል።

    የግል ጥበቃ እና መረጃ አያያዝ

    የእርስዎ ግላዊነት ሙሉ በሙሉ የተጠበቀ ነው። የእርስዎ ራስጌዎች እና የጥያቄ ዝርዝሮች በአሳሽዎ ውስጥ ብቻ ይቆያሉ። በBroBroGo በኩል ምንም ዓይነት መረጃ ወደ አገልጋይ አይሰቀልም ወይም አይቀመጥም።


    ተደጋግሞ የሚነሱ ጥያቄዎች (FAQ)

    ትክክለኛውን ምላሽ ወይም የቅድመ በረራ ምላሽን መለጠፍ አለብኝ?

    የአሳሽ ኮድ አንድ ምላሽ ማንበብ መቻሉን ለማረጋገጥ ትክክለኛ ምላሽን ይጠቀሙ። ለOPTIONS ምላሽ የኋለኛውን ዘዴ እና የተጠየቀውን የራስጌ ስሞችን ለሚቀበለው የቅድመ በረራ ምላሽ ተጠቀም።

    ለምንድነው አንድ ምልክት ከማስረጃዎች ጋር የማይሳካው?

    ኩኪዎች ወይም የኤችቲቲፒ ማረጋገጫ ሲካተቱ፣ የተፈቀደው መነሻ ከጠያቂው ምንጭ ጋር በትክክል መዛመድ አለበት። ለተፈቀደላቸው ዘዴዎች እና ራስጌዎች ዋይልድ ካርዶች እንዲሁ የዱር ምልክት ትርጉማቸውን ያጣሉ።

    የማለፊያ ውጤት የቀጥታ ጥያቄው እንደሚሰራ ያረጋግጣል?

    አይ ይህ ውጤት የሚሸፍነው የተለጠፈውን ምላሽ እና እዚህ የገባውን የጥያቄ ዝርዝሮችን ብቻ ነው። ማዘዋወር፣ የተሸጎጡ ምላሾች፣ የአገልጋይ ደንቦችን መቀየር፣ የአሳሽ ቅጥያዎች እና ከቅድመ በረራ በኋላ ያለው ትክክለኛ ምላሽ አሁንም ውጤቱን ሊለውጠው ይችላል።