Tarayıcı ve frontend
CORS: tarayıcının koyduğu sınır
CORS sunucuyu korumaz; kullanıcının tarayıcısının başka sitelere senin adına okuma yapmasını sınırlar.
Kavramı anlayalım
Aynı köken politikası (same-origin policy), bir sitedeki JavaScript’in başka bir kökenden gelen yanıtları okumasını varsayılan olarak engeller. Köken; şema, alan adı ve portun birleşimidir. CORS (Cross-Origin Resource Sharing), sunucunun ‘şu kökenler yanıtımı okuyabilir’ diyerek bu kısıtlamayı kontrollü biçimde gevşetmesidir.
Basit olmayan isteklerde (örneğin JSON gövdeli bir POST veya özel başlık) tarayıcı önce bir OPTIONS ‘preflight’ isteği gönderir. Sunucu izin veren başlıklarla yanıtlarsa asıl istek yapılır. CORS hatası tarayıcı konsolunda görünür; curl veya sunucudan sunucuya istekte CORS diye bir şey yoktur.
Bu yüzden CORS bir kimlik doğrulama yöntemi değildir: kötü niyetli biri tarayıcı dışından API’ni her zaman çağırabilir. Bu projede tarayıcı API’ye doğrudan gitmez; aynı kökendeki Next.js üzerinden gider. Böylece CORS hiç devreye girmez ve API yalnız iç ağdan erişilebilir kalır.
CORS hatalarını doğru okumak ve CORS’u güvenlik sanmamak için.
Hatayı ‘geçirmek’ için Access-Control-Allow-Origin: * ile birlikte kimlik bilgilerine izin vermeye çalışmak.
Aynı konu. Üç farklı derinlik.
https://ataberksahin.net ve https://api.ataberksahin.net
→ alan adı farklı → farklı köken → CORS gerekirAlt alan adı bile kökeni değiştirir.
Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.
Önce kendin dene.
API’nde CORS’u yalnız kendi sitene açtın. Biri ‘Artık API’m güvende, başka siteler kullanamaz’ diyor. Bu ifadedeki hata nedir?
Çözümü ve açıklamasını göster
CORS yalnız tarayıcıların başka kökenlerden yanıt okumasını sınırlar.
curl, Postman veya bir sunucu API’yi yine çağırabilir.
Gerçek koruma: kimlik doğrulama, yetkilendirme, hız sınırı.CORS kullanıcıyı başka sitelerin tarayıcı üzerinden veri okumasından korur; API’yi istemcilerden korumaz.