CORS Шалгагч

Буулгасан хариулт нь хөтчийн тодорхой гарал үүсэл, арга, хүсэлтийн толгой хэсгийг оруулахыг зөвшөөрөх эсэхийг шалгана уу.

Шалгах хариу
Урьдчилсан хариултыг шалгахдаа статусын мөрийг мөн буулгана уу.
Origin толгой хэсэгт илгээсэн схем, хост болон нэмэлт порт.
Күүки эсвэл 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 хариултын урьдчилсан нислэгийн хариултыг ашиглана уу.

    Яагаад орлуулагч тэмдэг нь итгэмжлэлээр бүтэлгүйтдэг вэ?

    Күүки эсвэл HTTP баталгаажуулалтыг оруулсан тохиолдолд зөвшөөрөгдсөн эх сурвалж нь хүсэлт гаргаж буй эх сурвалжтай яг таарч байх ёстой. Зөвшөөрөгдсөн аргууд болон толгойн нэрийн тэмдэгтүүд мөн орлуулагч тэмдэгийнхээ утгыг алддаг.

    Дамжсан үр дүн нь шууд хүсэлт ажиллахыг батлах уу?

    Үгүй. Энэ илэрц нь зөвхөн наасан хариулт болон энд оруулсан хүсэлтийн дэлгэрэнгүйг хамарна. Дахин чиглүүлэлтүүд, кэштэй хариултууд, серверийн дүрэм, хөтчийн өргөтгөлүүд болон урьдчилсан нислэгийн дараах бодит хариу үйлдэл нь үр дүнг өөрчлөх боломжтой хэвээр байна.

    CORS бодлогын үндэс ба ажиллах зарчим

    Cross-Origin Resource Sharing буюу CORS нь вэб хөтчүүд нэг домэйноос өөр домэйн руу илгээх хүсэлтийг хэрхэн зохицуулахыг тодорхойлдог аюулгүй байдлын чухал механизм юм. Вэб хөгжүүлэгчид, системийн администраторууд болон API платформ хариуцсан мэргэжилтнүүд хөтчийн код тодорхой хариултыг уншиж чадах эсэхийг шалгах, эсвэл OPTIONS хариулт нь дараагийн арга болон хүссэн толгойн нэрсийг зөвшөөрч байгаа эсэхийг тодорхойлох шаардлагатай болдог.

    Энэхүү CORS Шалгагч хэрэгсэл нь таны оруулсан HTTP хариултын толгой хэсэг болон хүсэлтийн дэлгэрэнгүй мэдээлэлд үндэслэн вэб хөтөч тухайн хүсэлтийг зөвшөөрөх эсэхийг тодорхойлдог. Хэрэгсэл нь зөвхөн таны оруулсан өгөгдөлд дүн шинжилгээ хийх бөгөөд сервер рүү хандахгүй, URL уншихгүй, күүки тохируулахгүй, DNS/TLS шалгахгүй, мөн серверийн тохиргоог өөрчлөхгүй.

    Оролтын өгөгдлийг тохируулах

    Хэрэглэгч CORS дүрмийг шалгахын тулд дараах талбаруудыг бөглөх шаардлагатай:

    • Шалгах хариу: "Бодит хариулт" эсвэл "Нислэгийн өмнөх хариулт" гэсэн сонголтоос сонгоно.
    • HTTP хариултын толгой: Шалгахыг хүсэж буй HTTP хариултын толгой хэсгийг хуулж наана. Нислэгийн өмнөх хариултыг шалгахдаа статусын мөрийг хамт буулгах шаардлагатай. Оролтын дээд хэмжээ 200,000 тэмдэгт байна.
    • Хүсэлтийн гарал үүсэл: Хүсэлт илгээж буй эх сурвалжийн схем, хост болон нэмэлт портыг оруулна (Жишээ нь: https://app.example.com). Энэ нь зөвхөн цэвэр гарал үүсэл эсвэл null байх ёстой бөгөөд URL зам, асуулга, эсвэл хэрэглэгчийн итгэмжлэлийг агуулж болохгүй.
    • Хүссэн арга: Хүсэлт гаргахад ашиглах HTTP аргыг оруулна.
    • Хүссэн толгойн нэрүүд: Access-Control-Request-Headers хэсэгт илгээх толгойн нэрсийг таслал эсвэл шинэ мөрөөр тусгаарлан бичнэ (Жишээ нь: Content-Type, Authorization).
    • Итгэмжлэлийг оруулах: Хүсэлтэд күүки эсвэл HTTP баталгаажуулалт агуулагдаж байгаа эсэхийг заах сэлгүүр.

    Хэрэв оруулсан мэдээлэлд алдаа байвал систем "Тодруулсан оруулгыг засаад дахин оролдоно уу." гэсэн алдааг заах бөгөөд дараах тусгай алдааны мэдэгдлүүдийг харуулна:

    • Хоосон хариулт наасан үед: "Шалгахаасаа өмнө HTTP хариултын толгой хэсгийг буулгана уу."
    • Хэт том өгөгдөл оруулсан үед: "Энэ хариулт нь ер бусын том байна. Үүнийг ‹max› тэмдэгтийн дор хадгална уу."
    • Буруу толгойн мөр оруулсан үед: "шугам ‹line› нь хүчинтэй HTTP толгой хэсэг эсвэл төлөвийн мөр биш байна."
    • Буруу толгойн нэр оруулсан үед: "‹line› мөр хүчингүй HTTP толгойн нэрийг агуулж байна."
    • Буруу гарал үүсэл оруулсан үед: "Зөвхөн схем, хост болон https://app.example.com гэх мэт нэмэлт порт бүхий гарал үүслийг оруулна уу."
    • Буруу HTTP арга оруулсан үед: "Хүчинтэй HTTP аргын токен оруулна уу."
    • Хөтөч зөвшөөрдөггүй арга оруулсан үед: "Хөтөчүүд ‹method› аргыг fetch хүсэлтэд ашиглахыг зөвшөөрдөггүй."
    • Буруу хүсэлтийн толгой оруулсан үед: "“‹header›” нь хүчинтэй HTTP хүсэлтийн толгой хэсгийн нэр биш байна."

    Хөтчийн шийдвэр ба үр дүн

    Хэрэгсэл нь өгөгдлийг шинжилсний дараа дараах төлөвүүдийн аль нэгийг харуулна:

    • Наасан CORS хариултаар зөвшөөрөгдсөн.
    • Буулгасан CORS хариултаар блоклосон.
    • Гарчиг дамжсан боловч нислэгийн өмнөх төлөв тодорхойгүй байна.
    • Хариу болон хүсэлтийн дэлгэрэнгүйг оруулаад CORS бодлогыг шалгана уу. (Мэдээлэл дутуу үед)
    • CORS бодлогыг шалгахын тулд хариултыг буулгана уу. (Анхны төлөв)

    Шийдвэр гаргахад нөлөөлсөн шалтгаануудыг систем тодорхой зааж өгдөг:

    Шалтгаан ба нөхцөл Системийн тайлбар
    Гарал үүсэл яг таарах "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 яг true."
    Итгэмжлэл шаардлагатай боловч байхгүй "Итгэмжлэгдсэн хүсэлтэд Access-Control-Allow-Credentials шаардлагатай: true."
    Итгэмжлэлгүй хүсэлт "Итгэмжлэлийг оруулаагүй тул Access-Control-Allow-Credentials энэ шийдвэрт нөлөөлөхгүй."

    Нислэгийн өмнөх (Preflight) шалгалтын дүрмүүд

    Нислэгийн өмнөх хүсэлтийн хувьд HTTP төлөвийн код болон зөвшөөрөгдсөн аргууд, толгой хэсгүүдийг дараах дүрмийн дагуу шалгана:

    • Статус код: Нислэгийн өмнөх хариулт нь амжилттай 2xx төлөвтэй байх ёстой. Хэрэв статусын мөр байхгүй бол үр дүн нь тодорхойгүй болно.
      • "Нислэгийн өмнөх төлөв ‹status› амжилттай боллоо."
      • "Нислэгийн өмнөх төлөв ‹status› амжилттай 2xx төлөв биш байна."
      • "HTTP төлөвийн мөрийг буулгаагүй тул шаардлагатай 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 бодлогыг тохируулах явцад дараах онцгой дүрмүүдийг анхаарах шаардлагатай:

    1. Итгэмжлэл ба Орлуулагч тэмдэг (*): Хүсэлтэд итгэмжлэл (күүки эсвэл HTTP баталгаажуулалт) багтсан тохиолдолд Access-Control-Allow-Origin нь орлуулагч тэмдэг буюу * байж болохгүй. Мөн энэ тохиолдолд зөвшөөрөгдсөн аргууд болон толгойн нэрсийн орлуулагч тэмдэгтүүд өөрийн орлуулах утгаа алдаж, хүчингүйд тооцогдоно.
    2. Олон утгатай гарал үүсэл: Хэрэв Access-Control-Allow-Origin толгой нь олон утга агуулсан эсвэл таслалаар тусгаарлагдсан байвал энэ нь хүчингүйд тооцогдоно.
    3. Authorization толгой: Итгэмжлэлгүй хүсэлтийн хувьд Access-Control-Allow-Headers: * тохиргоо нь бусад толгойг хамарч чадах боловч Authorization толгойг хамардаггүй. Authorization толгойг заавал тусгайлан жагсааж бичих шаардлагатай.

    Нууцлал ба мэдээлэл боловсруулалт

    Таны оруулсан HTTP толгой болон хүсэлтийн дэлгэрэнгүй мэдээлэл нь зөвхөн таны хөтөч дотор боловсруулагдана. BroBroGo системд ямар нэгэн өгөгдөл байршуулахгүй бөгөөд хадгалахгүй.

    Түгээмэл асуултууд

    Би бодит хариулт эсвэл нислэгийн өмнөх хариуг буулгах ёстой юу?
    Хөтчийн код нэг хариултыг уншиж чадах эсэхийг шалгахын тулд бодит хариултыг ашиглана уу. Дараачийн арга болон түүний хүссэн толгой хэсгийн нэрийг зөвшөөрсөн OPTIONS хариултын урьдчилсан нислэгийн хариултыг ашиглана уу.

    Яагаад орлуулагч тэмдэг нь итгэмжлэлээр бүтэлгүйтдэг вэ?
    Күүки эсвэл HTTP баталгаажуулалтыг оруулсан тохиолдолд зөвшөөрөгдсөн эх сурвалж нь хүсэлт гаргаж буй эх сурвалжтай яг таарч байх ёстой. Зөвшөөрөгдсөн аргууд болон толгойн нэрийн тэмдэгтүүд mөн орлуулагч тэмдэгийнхээ утгыг алддаг.

    Дамжсан үр дүн нь шууд хүсэлт ажиллахыг батлах уу?
    Үгүй. Энэ илэрц нь зөвхөн наасан хариулт болон энд оруулсан хүсэлтийн дэлгэрэнгүйг хамарна. Дахин чиглүүлэлтүүд, кэштэй хариултууд, серверийн дүрэм, хөтчийн өргөтгөлүүд болон урьдчилсан нислэгийн дараах бодит хариу үйлдэл нь үр дүнг өөрчлөх боломжтой хэвээр байна.