İçeriğe geçin

Cross-Origin Resource Sharing

CORS, tarayıcıda farklı origin’den gelen yanıtların okunmasını düzenler. API’de oturum açmanın veya yetki kontrolünün yerini tutmaz.

Diğer adlarıCORS
API ve veri sözleşmeleri

Yanıtları farklı bir origin için açmak

Cross-Origin Resource Sharing, kısaca CORS, HTTP başlıklarını kullanan bir mekanizmadır. Sunucu, başka hangi origin’lerde çalışan tarayıcı kodunun yanıtlarına erişebileceğini belirtir. Origin; protokol, sunucu adı ve porttan oluşur. Kuralı tarayıcı uygular; CORS, API’de oturum açmak değildir.

Portalı ve API’yi ayrı değerlendirmek

Kurgusal https://portal.example portalı, https://api.example/projects adresinden proje verilerini okumak ister. API, Access-Control-Allow-Origin ile portalın origin’ine izin verebilir. Yönteme ve başlıklara bağlı olarak tarayıcı, asıl çağrıya izin olup olmadığını önce OPTIONS ile sorar. Bu ön kontrole preflight denir; her çağrıda yapılmaz.

Diğer çağrılarda istek sunucuya ulaşmış olabilir, ancak tarayıcı daha sonra yanıtı betiğe açmaz. Bu yüzden CORS hata mesajı, sunucuda hiçbir işlem gerçekleşmediğini kanıtlamaz.

Oturum çerezleri de gönderilecekse kimlik bilgisi ayarları birbiriyle uyuşmalıdır. Bu tür yanıtlarda * yerine açık bir origin gerekir; Access-Control-Allow-Credentials başlığı da önemlidir. Tarayıcının çerez kuralları geçerliliğini korur. Bunlardan bağımsız olarak API, istenen proje verileri için kimliği ve yetkileri kontrol eder.

Kaynaklar