Tarayıcı güvenlik sınırları
SOP, CORS ve preflight
Tarayıcı erişim politikası, API yetkisi değildir.
Kavramı anlayalım
Same-origin policy başka origin’deki veriyi script’in okumasını sınırlar. CORS sunucunun belirli cross-origin okumalara izin verdiği tarayıcı mekanizmasıdır. curl ve backend servisler browser CORS kuralını uygulamak zorunda değildir; bu yüzden CORS bir authentication duvarı değildir.
Bazı safelisted istekler preflight olmadan gönderilir. Tarayıcı daha sonra yanıtı script’e açmayabilir; bu, sunucuda işlemin hiç gerçekleşmediğini göstermez. JSON veya Authorization gibi tercihler çoğunlukla OPTIONS preflight doğurur. Preflight credentials taşımaz.
Credentialed akışta açık izinli origin ve Access-Control-Allow-Credentials gerekir; wildcard origin uygun değildir. Dinamik origin yansıtmadan önce izin listesi doğrula ve Vary: Origin kullan. Browser’ın third-party cookie politikası ayrıca geçerlidir. CORS hatasını mode:no-cors ile çözmeye çalışmak opaque response üretir, JSON okuma izni yaratmaz.
Next.js ile .NET arasındaki tarayıcı isteklerini doğru kurmak için.
CORS reddi gördüğünde server hiçbir işlem yapmadı sanmak.
Aynı konu. Üç farklı derinlik.
Origin: https://app.example.testTarayıcının istek origin’i.
Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.
Önce kendin dene.
CORS ile API’nin yalnız kendi frontend’in tarafından çağrılmasını garanti edebilir misin?
Çözümü ve açıklamasını göster
CORS ≠ authentication / authorisationHayır; kimlik, kaynak yetkisi ve kötüye kullanım kontrolleri gerekir.