Aynı anda değişen iki şeyi ayırarak başlayın: ağ yolu ve tarayıcının uygulaması. VPN çıkış adresini değiştirir; sayfanın kaynağını değiştirmez, o kaynak şema, sunucu ve bağlantı noktasından oluşur. İstek artık başarılıysa yanıtta bir şey değişmiştir ya da isteğin kendisi değişmiştir. Hangisinin olduğunu bulmak bütün soruşturmadır.

CORS, tarayıcının uyguladığı bir başlık protokolüdür, bu yüzden ağ yolundaki hiçbir şey onu kapatamaz.

Kaynak bir IP adresi değildir

Kaynak bir şema, bir sunucu ve bir bağlantı noktasıdır. Paketlerin çıktığı adres değildir ve sunucunun gördüğü IP de değildir. Bu yüzden VPN gözlemlenebilir her adresi değiştirip kaynağı aynı bırakabilir. Tarayıcı yanıtın Access-Control-Allow-Origin değerini sayfanın kaynağıyla karşılaştırır ve çıkış adresi o karşılaştırmaya asla girmez.

Dolayısıyla bir CORS hatasını düzeltiyor gibi görünen uzantı ya da vekil sunucu başka bir şey yapar: başlıkları yeniden yazar veya isteği artık siteler arası olmayacak şekilde yönlendirir. İkisi de VPN'in özelliği değildir.

Tarayıcı gerçekte ne gönderir

Basit olmayan siteler arası bir istek için tarayıcı önce amaçlanan yöntemi ve başlıkları taşıyan bir ön kontrol OPTIONS gönderir. Sunucu izin verdiği yetkilerle yanıtlamalıdır ve gerçek istek ancak bu yanıt kuralları karşılıyorsa devam eder. VPN her iki alışverişi taşıyan yolu değiştirir ve aradaki hizmetlerin ne yanıtladığını değiştirebilir. Kaynak dizesini veya ön kontrol koşulunu değiştirmez.

Komut satırı istemcisi genellikle bunların hiçbirini göstermez. Origin başlığını göndermeyebilir, ön kontrolü sık sık atlar ve farklı kimlik bilgileri taşıyabilir. curl'e dönen bir gövde, sunucunun curl'e yanıt verdiğini kanıtlar.

Değişen yanıtı bulun

Yalnızca durum kodunu değil, her yoldaki gerçek yanıtı karşılaştırın. CORS izinlerini taşıyan başlıklara, içerik türüne, her yönlendirmeye ve bir WAF ya da CDN varyantının farklı bir sayfa üretip üretmediğine bakın. Bölgesel bir ret, kimlik doğrulama yönlendirmesi veya izin başlığı olmayan bir hata sayfası tarayıcıda başarısız olur ama CORS hatası gibi görünür. Bunlar teslim yolu farklılıklarıdır ve belgelenmesi gereken de odur.

İki yolun yanıt başlıklarını yakalayın ve satır satır karşılaştırın. Tek fark bir hata sayfasında Access-Control-Allow-Origin olmamasıysa nedeni buldunuz.

Uygulamayı değil hizmeti düzeltin

Hizmet sizinse izin verilen kaynakları ve istek özelliklerini açıkça belirtin, ardından ön yüzünün ve aracılarının ürettiği hataları okuyun. Bunu yapmıyorsanız hizmet sahibine temizlenmiş bir karşılaştırma gönderin. O rapora asla çerezleri, yetkilendirme başlıklarını veya oturum dışa aktarımlarını eklemeyin, çünkü ilkenin korumak için var olduğu kimlik bilgileri bunlardır.

CORS'u devre dışı bırakan tarayıcı uzantılarından kaçının. Güvenlik sınırını değiştirirken açıklanması gereken yanıt farkını saklarlar ve aynı hatayı diğer bütün kullanıcılar için yerinde bırakırlar.

Her iki yanıtı, kullanılan kaynağı ve izlenen yolu kaydedin. Bu kayıt bir VPN söylentisini hizmet hatasına dönüştürür.

İlgili makaleler