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.
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
İlgili terimler
- Same-Origin PolicyAynı köken politikası, tarayıcıda farklı kökenler arasındaki erişimi sınırlar. Yalnız sayfa yolunun değişmesi yeni bir köken oluşturmaz.
- Siteler arası istek sahteciliği (CSRF)CSRF, oturum açmış kullanıcı üzerinden istenmeyen bir istek gönderilmesini sağlar. Oturum çerezi tek başına işlemin amaçlandığını göstermez.
- SameSite çereziSameSite, farklı sitelerden başlayan isteklerde çerezin gönderilmesini etkiler. Seçim oturum ve gezinme akışına uymalıdır; CSRF koruması yine gereklidir.
- Server-Sent EventsServer-Sent Events, arka plan işinin ilerlemesi gibi metin bildirimlerini HTTP bağlantısıyla sunucudan istemciye taşır.
- ETagETag, HTTP kaynağının belirli bir gösterim sürümünü tanımlar; koşullu okuma veya değişiklik isteklerinde kullanılır.
- Elektronik veri değişimiEDI, yapılandırılmış iş belgelerini sistemler arasında aktarır. Biçim, iş ortağı profili, veri eşlemesi ve yanıtların birbiriyle uyumlu olması gerekir.
Projeniz ASES ile
Projenizi bize anlatın. İlk değerlendirmemizle size dönelim.