Sobes.tech
Middle

რატომ იგზავნება 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 საათით შენახვა

საერთო ჯამში, ეს არის უსაფრთხოების მექანიზმი რესურსებზე წვდომის კონტროლისთვის კროს-ორგინ მოთხოვნებში, რომელიც სერვერს საშუალებას აძლევს განსაზღვროს, უნდა შესრულდეს თუ არა ნებართვული მოქმედებები რეალური მოთხოვნის გაგზავნამდე.