Ինչ է անում CORS ստուգիչը
Այս գործիքն օգնում է ձեզ հասկանալ, թե արդյոք վեբ դիտարկիչը թույլ կտա որոշակի խաչաձև ծագման (cross-origin) հարցում՝ հիմնվելով ձեր տրամադրած HTTP պատասխանի վերնագրերի և ձեր հարցման մանրամասների վրա: Դուք տեղադրում եք պատասխանի վերնագրերը, նշում եք ձեր նախատեսած հարցման ծագումը, մեթոդը, հարցումների վերնագրերը և նշում եք, թե արդյոք հավատարմագրերը ներառված են: Այնուհետև գործիքը հայտնում է ձեզ, թե արդյոք դիտարկիչը թույլ կտա հարցումը՝ բացատրելով իր որոշումը CORS քաղաքականության հիման վրա:
Գործիքի մուտքային տվյալները
Ճշգրիտ վերլուծություն ստանալու համար անհրաժեշտ է լրացնել հետևյալ մուտքային դաշտերը.
- Ստուգման պատասխանը (
Ստուգման պատասխանը). Ընտրություն «Իրական արձագանք» (Իրական արձագանք) կամ «Նախնական թռիչքի պատասխան» (Նախնական թռիչքի պատասխան) տարբերակների միջև: - HTTP պատասխանի վերնագրեր (
HTTP պատասխանի վերնագրեր). Տեքստային դաշտ HTTP պատասխանի վերնագրերի համար, ներառյալ կարգավիճակի գիծը նախնական թռիչքի պատասխանների դեպքում:- Առավելագույն թույլատրելի երկարությունը 200,000 նիշ է:
- Դատարկ թողնելու դեպքում կցուցադրվի սխալ՝ «Տեղադրեք HTTP պատասխանի վերնագրերը նախքան ստուգելը:» (
Տեղադրեք HTTP պատասխանի վերնագրերը նախքան ստուգելը:): - Չափազանց մեծ մուտքագրման դեպքում կցուցադրվի սխալ՝ «Այս արձագանքը անսովոր մեծ է: Պահեք այն
‹max›նիշերի տակ:» (Այս արձագանքը անսովոր մեծ է: Պահեք այն ‹max› նիշերի տակ:): - Անվավեր տողի դեպքում կցուցադրվի սխալ՝ «
‹line›տողը վավեր HTTP վերնագիր կամ կարգավիճակի տող չէ:» (‹line› տողը վավեր HTTP վերնագիր կամ կարգավիճակի տող չէ:): - Անվավեր վերնագրի անվան դեպքում կցուցադրվի սխալ՝ «
‹line›տողը պարունակում է անվավեր HTTP վերնագրի անուն:» (‹line› տողը պարունակում է անվավեր HTTP վերնագրի անուն:):
- Հայցեք ծագումը (
Հայցեք ծագումը). Տեքստային դաշտ ծագման սխեմայի, հոսթի և կամընտիր պորտի համար (օրինակ՝https://app.example.com): Այն պետք է լինի մաքուր ծագում կամnull՝ առանց URL-ի ուղու, հարցման (query) կամ հավատարմագրերի: Սխալ ձևաչափի դեպքում կցուցադրվի սխալ՝ «Մուտքագրեք սկզբնաղբյուր միայն սխեմայով, հոսթով և կամընտիր պորտով, ինչպիսին է https://app.example.com:» (Մուտքագրեք սկզբնաղբյուր միայն սխեմայով, հոսթով և կամընտիր պորտով, ինչպիսին է https://app.example.com:): - Հայցվող մեթոդ (
Հայցվող մեթոդ). Տեքստային դաշտ HTTP մեթոդի համար: Անվավեր մեթոդի դեպքում հայտնվում է սխալ՝ «Մուտքագրեք վավեր HTTP մեթոդի նշան:» (Մուտքագրեք վավեր HTTP մեթոդի նշան:), իսկ արգելված մեթոդի դեպքում՝ «Զննարկիչները թույլ չեն տալիս‹method›մեթոդը fetch հարցումներում:» (Զննարկիչները թույլ չեն տալիս ‹method› մեթոդը fetch հարցումներում:): - Հայցված վերնագրերի անունները (
Հայցված վերնագրերի անունները). Տեքստային դաշտAccess-Control-Request-Headers-ից վերցված վերնագրերի անունների համար՝ բաժանված ստորակետերով կամ տողերով (օրինակ՝Content-Type, Authorization): Անվավեր վերնագրի դեպքում կցուցադրվի սխալ՝ ««‹header›»-ը վավեր HTTP հարցման վերնագրի անուն չէ:» («‹header›»-ը վավեր HTTP հարցման վերնագրի անուն չէ:): - Ներառեք հավատարմագրերը (
Ներառեք հավատարմագրերը). Փոխանջատիչ, որը նշում է, թե արդյոք հարցումը ներառում է թխուկներ (cookies) կամ HTTP նույնականացում.
Ընդհանուր մուտքային խնդիրների դեպքում գործիքը ցույց է տալիս հետևյալ հաղորդագրությունը՝ «Ուղղեք ընդգծված մուտքագրումը և նորից փորձեք:» (Ուղղեք ընդգծված մուտքագրումը և նորից փորձեք:):
Գործիքի ելքային տվյալները և որոշումները
Գործիքը վերլուծում է տվյալները և ցուցադրում հետևյալ արդյունքները.
- Բրաուզերի որոշում (
Բրաուզերի որոշում).- «Տեղադրեք պատասխան՝ ստուգելու դրա CORS քաղաքականությունը:» (
ready) — սկզբնական վիճակ: - «Մուտքագրեք պատասխանը և հարցման մանրամասները, ապա ստուգեք CORS քաղաքականությունը:» (
Մուտքագրեք պատասխանը և հարցման մանրամասները, ապա ստուգեք CORS քաղաքականությունը:) — երբ տվյալներ ներկայացված չեն: - «Թույլատրված է տեղադրված CORS պատասխանով:» (
allowed): - «Արգելափակված է տեղադրված CORS պատասխանով:» (
blocked): - «Վերնագրերն անցնում են, բայց նախավռիչքի կարգավիճակն անհայտ է:» (
indeterminate):
- «Տեղադրեք պատասխան՝ ստուգելու դրա CORS քաղաքականությունը:» (
- Վերլուծված Access-Control դաշտերը (
Վերլուծված Access-Control դաշտերը). Ցուցադրում է վերլուծվածAccess-Control-*դաշտերը: - Որոշման պատճառները.
- «Access-Control-Allow-Origin ճշգրտորեն համապատասխանում է
‹origin›-ին:» (Access-Control-Allow-Origin ճշգրտորեն համապատասխանում է ‹origin›-ին:): - «Access-Control-Allow-Origin-ն թույլ է տալիս ցանկացած ծագում այս հարցման համար:» (
Access-Control-Allow-Origin-ն թույլ է տալիս ցանկացած ծագում այս հարցման համար:): - «Access-Control-Allow-Origin բացակայում է:» (
Access-Control-Allow-Origin բացակայում է:): - «Access-Control-Allow-Origin չի կարող լինել *, երբ հավատարմագրերը ներառված են:» (
Access-Control-Allow-Origin չի կարող լինել *, երբ հավատարմագրերը ներառված են:): - «Access-Control-Allow-Origin-ը
‹actual›է, ոչ թե‹expected›:» (Access-Control-Allow-Origin-ը ‹actual› է, ոչ թե ‹expected›:): - «Access-Control-Allow-Origin ունի անվավեր արժեք՝
‹value›:» (Access-Control-Allow-Origin ունի անվավեր արժեք՝ ‹value›:): - «Access-Control-Allow-Credentials ճիշտ է:» (
Access-Control-Allow-Credentials ճիշտ է:): - «Հավատարմագրված խնդրանքին անհրաժեշտ է Access-Control-Allow-Credentials՝ ճշմարիտ:» (
Հավատարմագրված խնդրանքին անհրաժեշտ է Access-Control-Allow-Credentials՝ ճշմարիտ:): - «Հավատարմագրերը ներառված չեն, ուստի Access-Control-Allow-Credentials-ն չի ազդում այս որոշման վրա:» (
Հավատարմագրերը ներառված չեն, ուստի Access-Control-Allow-Credentials-ն չի ազդում այս որոշման վրա:): - «
‹status›նախաթռիչքային կարգավիճակը հաջողված է:» (‹status› նախաթռիչքային կարգավիճակը հաջողված է:): - «Նախաթռիչքային
‹status›կարգավիճակը հաջողված 2xx կարգավիճակ չէ:» (Նախաթռիչքային ‹status› կարգավիճակը հաջողված 2xx կարգավիճակ չէ:): - «HTTP կարգավիճակի գիծ չի տեղադրվել, ուստի 2xx նախնական թռիչքի կարգավիճակը չի կարող ստուգվել:» (
HTTP կարգավիճակի գիծ չի տեղադրվել, ուստի 2xx նախնական թռիչքի կարգավիճակը չի կարող ստուգվել:): - «Նախնական թռիչքը թույլ է տալիս
‹method›:» (Նախնական թռիչքը թույլ է տալիս ‹method›:): - «
‹method›-ը CORS-ով ապահովված մեթոդ է և կարիք չունի հայտնվել Access-Control-Allow-Methods-ում:» (‹method›-ը CORS-ով ապահովված մեթոդ է և կարիք չունի հայտնվել Access-Control-Allow-Methods-ում:): - «Access-Control-Allow-Methods-ն թույլ չի տալիս
‹method›-ին:» (Access-Control-Allow-Methods-ն թույլ չի տալիս ‹method›-ին:): - «Ոչ մի պահանջված վերնագրի անվանումը նախնական թռիչքի հաստատման կարիք չունի:» (
Ոչ մի պահանջված վերնագրի անվանումը նախնական թռիչքի հաստատման կարիք չունի:): - «Նախնական թռիչքը թույլ է տալիս պահանջվող վերնագրերի անվանումները՝
‹headers›:» (Նախնական թռիչքը թույլ է տալիս պահանջվող վերնագրերի անվանումները՝ ‹headers›:): - «Access-Control-Allow-Headers. * ծածկում է այս անունները առանց հավատարմագրերի խնդրանքի.
‹headers›:» (Access-Control-Allow-Headers. * ծածկում է այս անունները առանց հավատարմագրերի խնդրանքի. ‹headers›:): - «Access-Control-Allow-Headers-ն թույլ չի տալիս՝
‹headers›:» (Access-Control-Allow-Headers-ն թույլ չի տալիս՝ ‹headers›:): - «Authorization պետք է հստակորեն նշված լինի. Access-Control-Allow-Headers: * չի ծածկում այն:» (
Authorization պետք է հստակորեն նշված լինի. Access-Control-Allow-Headers: * չի ծածկում այն:):
- «Access-Control-Allow-Origin ճշգրտորեն համապատասխանում է
Կանոններ և հատուկ դեպքեր
CORS քաղաքականության վերլուծության ժամանակ գործում են հետևյալ կանոններն ու սահմանափակումները.
- Երբ հարցումը ներառում է հավատարմագրեր,
Access-Control-Allow-Origin-ը չի կարող լինել*: Բացի այդ, թույլատրված մեթոդների և վերնագրերի համար նախատեսված աստղանիշները (*) կորցնում են իրենց ընդհանրացնող (wildcard) նշանակությունը: - Եթե
Access-Control-Allow-Origin-ը պարունակում է բազմակի արժեքներ կամ բաժանված է ստորակետերով, այն համարվում է անվավեր: - Հավատարմագրերով հարցումների դեպքում
Access-Control-Allow-Credentials-ը պետք է լինի ճշգրիտtrue: - Եթե հավատարմագրեր ներառված չեն,
*նիշը կարող է օգտագործվելAccess-Control-Allow-MethodsևAccess-Control-Allow-Headersդաշտերում, բացառությամբAuthorizationվերնագրի: Authorizationվերնագիրը պետք է հստակորեն նշված լինիAccess-Control-Allow-Headers-ում, նույնիսկ եթե առկա էAccess-Control-Allow-Headers: *տողը:- Եթե նախնական թռիչքի (preflight) պատասխանը չի ներառում HTTP կարգավիճակի գիծ, ապա նախնական թռիչքի ստուգման արդյունքը կլինի «անորոշ» (indeterminate):
Գործիքի սահմանափակումները և գաղտնիությունը
Այս գործիքը միայն ստուգում է տրամադրված պատասխանի վերնագրերը և հարցման մանրամասները: Այն չի կապվում սերվերի հետ, չի կարդում URL-ներ, չի տեղադրում թխուկներ, չի ստուգում DNS/TLS և չի փոփոխում սերվերի կարգավորումները:
Դրական արդյունքը վերաբերում է միայն տեղադրված պատասխանին և մուտքագրված տվյալներին: Այն հաշվի չի առնում վերահղումները, քեշավորված պատասխանները, սերվերի փոփոխվող կանոնները, դիտարկիչի ընդլայնումները կամ նախնական թռիչքից հետո ստացված իրական պատասխանը:
Ձեր տվյալների գաղտնիությունը լիովին պաշտպանված է. ձեր վերնագրերը և հարցումների մանրամասները մնում են ձեր դիտարկիչում: BroBroGo-ում ոչինչ չի վերբեռնվում կամ պահվում:
Ում է անհրաժեշտ այս գործիքը
Այս գործիքը նախատեսված է հետևյալ մասնագետների համար.
- Front-end ծրագրավորողներ:
- Back-end ծրագրավորողներ:
- API հարթակների ծրագրավորողներ:
- Operations (շահագործման) մասնագետներ:
- Ցանկացած ոք, ով ցանկանում է հասկանալ՝ արդյոք դիտարկիչի կոդը կարող է կարդալ կոնկրետ պատասխանը: