დაიწყეთ იმით, რომ გამოყოთ ორი რამ, რაც ერთდროულად შეიცვალა: ქსელური გზა და ბრაუზერის აღსრულება. VPN ცვლის გასასვლელ მისამართს; ის არ ცვლის გვერდის წარმომავლობას, რომელიც სქემის, ჰოსტისა და პორტისგან შედგება. თუ მოთხოვნა ახლა წარმატებულია, პასუხში რაღაც შეიცვალა, ან თავად მოთხოვნა შეიცვალა. იმის გარკვევა, რომელი, მთელი გამოძიებაა.

CORS სათაურების პროტოკოლია, რომელსაც ბრაუზერი აღასრულებს, ამიტომ ქსელურ გზაზე ვერაფერი გამორთავს მას.

წარმომავლობა IP მისამართი არ არის

წარმომავლობა სქემა, ჰოსტი და პორტია. ეს არ არის მისამართი, საიდანაც პაკეტები გადიან, და არ არის IP, რომელსაც სერვერი ხედავს. ამიტომ VPN-ს შეუძლია შეცვალოს ყოველი დაკვირვებადი მისამართი და წარმომავლობა უცვლელად დატოვოს. ბრაუზერი ადარებს პასუხის Access-Control-Allow-Origin-ს გვერდის წარმომავლობას, და გასასვლელი მისამართი ამ შედარებაში არასოდეს შედის.

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

რას აგზავნის ბრაუზერი სინამდვილეში

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

ბრძანების ხაზის კლიენტი ჩვეულებრივ ამას არაფერს აჩვენებს. შეიძლება არ აგზავნიდეს Origin სათაურს, ხშირად გამოტოვებს წინასწარ შემოწმებას და შეიძლება ატაროს სხვა რწმუნებულები. curl-ზე დაბრუნებული სხეული ამტკიცებს, რომ სერვერმა curl-ს უპასუხა.

იპოვეთ შეცვლილი პასუხი

შეადარეთ ნამდვილი პასუხი თითოეულ გზაზე, და არა მხოლოდ სტატუსის კოდი. შეხედეთ CORS-ის ნებართვების მატარებელ სათაურებს, კონტენტის ტიპს, ნებისმიერ გადამისამართებას და იმას, შექმნა თუ არა WAF-ის ან CDN-ის ვარიანტმა სხვა გვერდი. რეგიონული უარი, ავთენტიფიკაციის გადამისამართება ან ნებართვის სათაურის გარეშე შეცდომის გვერდი ბრაუზერში ყველა ვარდება, თუმცა CORS-ის ხარვეზად გამოიყურება. ეს მიწოდების გზის განსხვავებებია, და სწორედ ისინი უნდა დაფიქსირდეს.

ჩაწერეთ პასუხის სათაურები ორივე გზიდან და შეადარეთ ისინი სტრიქონობრივად. თუ ერთადერთი განსხვავება ერთ შეცდომის გვერდზე Access-Control-Allow-Origin-ის არარსებობაა, მიზეზი იპოვეთ.

შეაკეთეთ სერვისი, არა აღსრულება

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

მოერიდეთ ბრაუზერის დამატებებს, რომლებიც CORS-ს თიშავენ. ისინი ცვლიან უსაფრთხოების საზღვარს, ამავდროულად მალავენ პასუხის იმ განსხვავებას, რომელიც უნდა აეხსნა, და იგივე მარცხს ტოვებენ ყველა სხვა მომხმარებლისთვის.

ჩაწერეთ ორივე პასუხი, გამოყენებული წარმომავლობა და გავლილი გზა. ეს ჩანაწერი VPN-ის ჭორს სერვისის ხარვეზად აქცევს.

დაკავშირებული სტატიები