Ինչու՞ է HTTP հարցում ուղարկվում OPTIONS մեթոդը նախքան GET/POST հարցումները կատարելն է։
sobes.tech AI
Պատասխան AI-ից
Մեթոդ OPTIONS-ը օգտագործվում է հասանելի մեթոդներն ու այլ պարամետրային տարբերակները որոշելու համար վեբ-ռեսուրսի կամ սերվերի համար, առանց հատուկ գործողության կամ ռեսուրսին մուտք գործելու պահանջի։ Դա CORS (Cross-Origin Resource Sharing) մեխանիզմի մաս է։
Երբ վեբ-էջը փորձում է կատարել հարցում այլ դոմենի ռեսուրսի նկատմամբ (կրոս-օրիգին հարցում), բրաուզերը կարող է ուղարկել նախնական (preflight) հարցում մեթոդով OPTIONS։ Այս հարցումը պարունակում է Access-Control-Request-Method և Access-Control-Request-Headers գլխագրեր, որոնք ցույց են տալիս, թե որ HTTP մեթոդն ու գլխագրերը կօգտագործվեն իրական հարցում։
Սերվերը, որը ստանում է OPTIONS հարցումը, կարող է պատասխանել Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers և Access-Control-Max-Age գլխագրերով, որպեսզի տեղեկացնի բրաուզերին, թույլատրված է արդյոք իրական հարցումը և որոնք մեթոդներն ու գլխագրերը թույլատրված են։
Եթե սերվերը թույլատրում է հարցումը, բրաուզերը անցնում է իրական հարցումը (GET, POST և այլն): Եթե ոչ, հարցումը խոչընդոտվում է բրաուզերով, և իրական հարցումը չի ուղարկվում, այս կերպ պաշտպանելով սերվերին անօրինական կրոս-օրիգին հարցումներից։
OPTIONS հարցումը ուղարկվում է ոչ թե ամեն անգամ GET/POST հարցումից առաջ, այլ միայն որոշակի կրոս-օրիգին հարցումների դեպքում, որոնք համարվում են "չպարզ" (non-simple): Պարզ հարցումները (օրինակ, GET կամ POST որոշակի պարամետրերով և առանց օգտագործողի հարմարեցված գլխագրերի) ուղարկվում են առանց նախնական OPTIONS հարցման։
# Օրինակ OPTIONS հարցման գլխագրեր
# Access-Control-Request-Method: POST
# Access-Control-Request-Headers: Content-Type, Authorization
# Origin: http://client-domain.com
# Օրինակ սերվերի պատասխան գլխագրեր
# Access-Control-Allow-Origin: http://client-domain.com
# Access-Control-Allow-Methods: POST, GET, OPTIONS
# Access-Control-Allow-Headers: Content-Type, Authorization
# Access-Control-Max-Age: 86400 # Պատասխանն պահել 24 ժամ
Ընդհանուր առմամբ, սա անվտանգության մեխանիզմ է ռեսուրսների մուտքի վերահսկման համար կրոս-օրիգին հարցումների ժամանակ, որը թույլ է տալիս սերվերին որոշել նախքան հիմնական հարցումը ուղարկել, արդյոք բրաուզերը թույլատրված գործողություններ կատարի։