Miért küldik az OPTIONS módszert egy HTTP-kérésben a GET/POST kérések végrehajtása előtt?
sobes.tech MI
Válasz az MI-től
Az OPTIONS módszert arra használják, hogy meghatározzák egy weberőforrás vagy szerver elérhető módszereit és más paraméterezett opcióit, anélkül, hogy különleges műveletet vagy hozzáférést igényelne a kérés a forráshoz. Ez a CORS (Cross-Origin Resource Sharing) mechanizmus része.
Amikor egy weboldal megpróbál egy kérést küldeni egy másik domainen lévő erőforráshoz (krossz-eredetű kérés), a böngésző előzetes (preflight) kérésként küldheti az OPTIONS módszerrel. Ez a kérés tartalmaz olyan fejlécet, mint az Access-Control-Request-Method és az Access-Control-Request-Headers, amelyek megmutatják, hogy mely HTTP-módszer és fejléc fog használatban lenni a tényleges kérésben.
A szerver, amely megkapja az OPTIONS kérés, válaszolhat olyan fejléc-sorozatokkal, mint az Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers és Access-Control-Max-Age, hogy tájékoztassa a böngészőt arról, hogy a tényleges kérés engedélyezett-e, és mely módszerek/fejléc típusok elfogadottak.
Ha a szerver engedélyezi a kérést, a böngésző folytatja a tényleges kérés (GET, POST stb.) végrehajtását. Ha nem, a kérés blokkolva lesz a böngésző által, így védi a szervert az engedély nélküli cross-origin kérésektől.
Az OPTIONS kérés nem küldődik minden GET/POST kérés előtt, hanem csak bizonyos típusú cross-origin kérések előtt, amelyeket "nem egyszerű" (non-simple) kérésnek tekintenek. Az egyszerű kérdések (például GET vagy POST bizonyos tartalomtípusokkal és nem személyre szabott fejléc nélkül) kérés nélkül küldődnek.
# Példa az OPTIONS kérés fejlécére
# Access-Control-Request-Method: POST
# Access-Control-Request-Headers: Content-Type, Authorization
# Origin: http://client-domain.com
# Példa a szerver válasz fejlécére az OPTIONS-re
# 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 # A preflight eredmény cache-elése 24 órán keresztül
Általánosságban ez egy biztonsági mechanizmus az erőforrások hozzáférésének ellenőrzésére cross-origin kérések esetén, lehetővé téve a szerver számára, hogy a fő kérés küldése előtt meghatározza, a böngésző végrehajtja-e az engedélyezett műveleteket.