Miks saadetakse HTTP-päringus enne GET/POST-päringute tegemist OPTIONS-meetod?
sobes.tech AI
Vastus AI-lt
Meetod OPTIONS kasutatakse selleks, et määrata saadaval olevad meetodid ja muud parameetritud valikud veebiallika või serveri jaoks, ilma et oleks vaja teha erilist tegevust või saada juurdepääs ressursile ise. See on osa CORS-i (Cross-Origin Resource Sharing) mehhanismist.
Kui veebileht püüab teha päringut teisele domeenile (kross- päritolu päring), võib brauser saata eelneva (preflight) päringu meetodiga OPTIONS. See päring sisaldab päiseid nagu Access-Control-Request-Method ja Access-Control-Request-Headers, mis näitavad, millist HTTP meetodit ja milliseid päiseid kasutatakse tegelikus päringus.
Server, mis saab OPTIONS-päringu, võib vastata päistega Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers ja Access-Control-Max-Age, et teavitada brauserit, kas tegelik päring on lubatud ja millised meetodid/päised on lubatud.
Kui server lubab päringu, liigub brauser tegeliku päringu juurde (GET, POST jne). Kui mitte, blokeeritakse päring brauseri poolt ning tegelik päring ei saadeta, kaitstes seeläbi serverit volitamata kross- päritolu päringute eest.
OPTIONS-päring saadetakse mitte iga GET/POST-päringu eel, vaid ainult teatud kross- päritolu päringute puhul, mida peetakse "mittepõhilisteks" (non-simple). Lihtsad päringud (näiteks GET või POST teatud sisutüüpidega ja ilma kasutaja päisteta) saadetakse ilma eelneva OPTIONS-päringuta.
# Näide OPTIONS-päringu päistest
# Access-Control-Request-Method: POST
# Access-Control-Request-Headers: Content-Type, Authorization
# Origin: http://client-domain.com
# Näide serveri vastuse päistest
# 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 # Tulemuse vahemälu 24 tunniks
Üldiselt on see turvamehhanism ressurssidele juurdepääsu kontrollimiseks kross- päritolu päringutes, võimaldades serveril määrata enne põhipäringu saatmist, kas brauser sooritab lubatud toimingud.