Mulakan dengan memisahkan dua perkara yang berubah serentak: laluan rangkaian dan penguatkuasaan pelayar. VPN mengubah alamat keluar; ia tidak mengubah asalan halaman, yang terbina daripada skema, hos dan port. Jika permintaan kini berjaya, sesuatu dalam respons telah berubah, atau permintaan itu sendiri berubah. Menentukan yang mana satu ialah keseluruhan siasatan.

CORS ialah protokol pengepala yang dikuatkuasakan oleh pelayar, jadi tiada apa pun pada laluan rangkaian boleh melumpuhkannya.

Asalan bukan alamat IP

Asalan ialah skema, hos dan port. Ia bukan alamat tempat paket keluar, dan bukan IP yang dilihat pelayan. Itulah sebabnya VPN boleh mengubah setiap alamat yang boleh diperhati dan membiarkan asalan kekal sama. Pelayar membandingkan Access-Control-Allow-Origin respons dengan asalan halaman, dan alamat keluar tidak pernah masuk ke dalam perbandingan itu.

Jadi sambungan atau proksi yang kelihatan membaiki ralat CORS melakukan perkara lain: menulis semula pengepala, atau menghalakan permintaan supaya ia tidak lagi merentas asalan. Kedua-duanya bukan sifat VPN.

Apa yang sebenarnya dihantar oleh pelayar

Untuk permintaan merentas asalan yang bukan mudah, pelayar menghantar pra-semakan OPTIONS dahulu, membawa kaedah dan pengepala yang dimaksudkan. Pelayan mesti menjawab dengan kebenaran yang dibenarkannya, dan permintaan sebenar hanya menyusul jika jawapan itu memenuhi peraturan. VPN mengubah laluan yang membawa kedua-dua pertukaran dan boleh mengubah apa yang dijawab oleh perkhidmatan perantaraan. Ia tidak mengubah rentetan asalan atau syarat pra-semakan.

Klien baris arahan biasanya tidak menunjukkan apa-apa daripada itu. Ia mungkin tidak menghantar pengepala Origin, sering melangkau pra-semakan, dan mungkin membawa kelayakan berbeza. Badan yang dipulangkan kepada curl membuktikan pelayan menjawab curl.

Cari respons yang berubah

Bandingkan respons sebenar melalui setiap laluan, bukan hanya kod status. Lihat pengepala yang membawa kebenaran CORS, jenis kandungan, sebarang pengalihan hala, dan sama ada varian WAF atau CDN menghasilkan halaman berbeza. Penolakan serantau, pengalihan hala pengesahan atau halaman ralat tanpa pengepala kebenaran semuanya gagal dalam pelayar sambil kelihatan seperti pepijat CORS. Itu perbezaan laluan penghantaran, dan itulah yang perlu didokumenkan.

Tangkap pengepala respons daripada kedua-dua laluan dan bandingkannya baris demi baris. Jika satu-satunya perbezaan ialah Access-Control-Allow-Origin yang tiada pada satu halaman ralat, anda telah menemui puncanya.

Baiki perkhidmatan, bukan penguatkuasaan

Apabila perkhidmatan itu milik anda, nyatakan asalan yang dibenarkan dan ciri permintaan secara jelas, kemudian baca ralat yang dihasilkan oleh bahagian hadapan dan perantaranya. Jika tidak, hantarkan perbandingan yang telah dibersihkan kepada pemilik perkhidmatan. Jangan sekali-kali sertakan kuki, pengepala kebenaran atau eksport sesi dalam laporan itu, kerana itulah kelayakan yang dasar itu wujud untuk melindunginya.

Elakkan sambungan pelayar yang melumpuhkan CORS. Ia mengubah sempadan keselamatan sambil menyembunyikan perbezaan respons yang perlu dijelaskan, dan ia membiarkan kegagalan yang sama untuk setiap pengguna lain.

Rekod kedua-dua respons, asalan yang digunakan dan laluan yang diambil. Rekod itu mengubah khabar angin VPN menjadi pepijat perkhidmatan.

Artikel berkaitan