İçeriğe Geç

CORS Nedir?

CORS (Cross-Origin Resource Sharing), tarayıcıda çalışan kodun başka bir kökene, yani alan adı, protokol ya da bağlantı noktası farklı bir adrese gönderdiği isteğin yanıtını okuyup okuyamayacağını HTTP başlıklarıyla belirleyen sistemdir.

Diğer Adları: Cross-Origin Resource Sharing

CORS Nasıl Çalışır?

Tarayıcılardaki aynı köken politikası (same-origin policy), bir sitenin JavaScript kodunun başka kökene ait kaynaklara erişmesini yasaklar. CORS, sunucuya bu erişime kendi kaynakları için isteyerek izin verme imkânı tanır: sunucu yanıtına Access-Control-Allow-Origin başlığını ekleyerek yanıtın hangi kökenle paylaşılabileceğini bildirir.

Bazı isteklerde tarayıcı asıl istekten önce bir ön kontrol isteği (preflight) gönderir; sunucu Access-Control-Allow-Methods ve Access-Control-Allow-Headers başlıklarıyla hangi yöntemlere ve başlıklara izin verdiğini bildirir. Sunucu izin vermezse tarayıcı yanıtı sayfadaki koda vermez ve geliştirici konsolunda CORS hatası görünür.

CORS Hatası Mağazada Nerede Görülür?

Tema içine eklenen bir kod, harici bir stok, yorum ya da kargo takip servisine doğrudan tarayıcıdan istek gönderdiğinde, servis mağazanın adresine izin vermiyorsa veri sayfaya gelmez. Aynı istek mağazanın sunucusundan yapıldığında CORS devreye girmez, çünkü CORS tarayıcının ön yüz kodunu sınırlayan bir kuraldır.

Örnek: Bir mağaza ürün sayfasında harici bir servisten canlı stok bilgisini göstermek ister. Tarayıcıdaki kod servise istek gönderir, ama servis yanıtında mağazanın adresine izin veren başlık olmadığı için tarayıcı yanıtı engeller. Çözüm, servisin mağaza adresine izin vermesi ya da isteğin mağazanın sunucusu üzerinden yapılmasıdır.

CORS Bir Güvenlik Önlemi Midir?

Koruma, aynı köken politikasının kendisidir; CORS ise bu korumayı belirli kökenler için gevşetir. Bu nedenle CORS ayarı siteye yeni bir güvenlik katmanı eklemez, yalnızca hangi kökenlerin yanıtı okuyabileceğini belirler. İzin yalnızca gerçekten gereken kökenlere verilir; siteler arası betik çalıştırma ve istek sahteciliği gibi saldırılara karşı ayrı önlemler gerekir.

CORS Hakkında Sık Sorulan Sorular

CORS hatası tarayıcıda mı sunucuda mı düzeltilir?

Sunucuda düzeltilir. İzin, isteği karşılayan sunucunun yanıt başlıklarıyla verilir; tarayıcıda yapılacak bir ayar kalıcı çözüm değildir.

Sunucudan sunucuya yapılan API isteklerinde CORS gerekir mi?

Gerekmez. CORS, tarayıcının ön yüz kodunu başka kökenden gelen yanıtlara karşı sınırlamasıyla ilgilidir; ERP ya da pazaryeri entegrasyonu gibi sunucu tarafındaki isteklerde uygulanmaz.

CORS hatası sitenin ziyaretçilerini etkiler mi?

Etkiler. Hata ziyaretçinin tarayıcısında oluştuğu için, engellenen isteğe bağlı bölüm (stok bilgisi ya da yorum kutusu gibi) ziyaretçiye boş ya da eksik görünür.