CORS Nedir?

İngilizce: CORS (Cross-Origin Resource Sharing)

CORS, tarayıcının farklı originlerden gelen API isteklerini hangi alan adlarının okuyabileceğini HTTP başlıklarıyla denetler.

CORS Nedir?

CORS (Cross-Origin Resource Sharing), tarayıcıların farklı originler arasındaki yanıtları okuyup okuyamayacağını belirleyen bir HTTP başlık mekanizmasıdır. Origin; protokol, alan adı ve port birleşimidir. https://app.example.com ile https://api.example.com farklı origin sayılır.

Nasıl Çalışır?

Tarayıcı, frontend uygulamasının başka bir origin’deki API’ye erişmek istediğini görür. Sunucu yanıtında Access-Control-Allow-Origin gibi başlıklarla hangi originlere izin verdiğini söyler. Basit olmayan isteklerde tarayıcı önce OPTIONS preflight isteği gönderir ve metod, başlık, credential iznini kontrol eder.

Yanlış Anlaşılan Nokta

CORS bir sunucu tarafı yetkilendirme sistemi değildir. Tarayıcının JavaScript’e yanıtı gösterip göstermeyeceğini yönetir; curl, Postman veya sunucudan sunucuya yapılan istekleri engellemez. Bu yüzden API güvenliği için kimlik doğrulama, yetkilendirme, rate limit ve giriş doğrulama ayrıca uygulanmalıdır.

Sık Ayarlar

  • Access-Control-Allow-Origin: İzin verilen origin
  • Access-Control-Allow-Methods: İzin verilen HTTP metodları
  • Access-Control-Allow-Headers: Özel istek başlıkları
  • Access-Control-Allow-Credentials: Cookie veya authorization bilgisinin gönderilip gönderilemeyeceği

İş Dünyasında Kullanımı

REST API ile ayrı domain’de çalışan tarayıcı tabanlı frontend’ler CORS ayarına ihtiyaç duyar; native mobil uygulamalar genellikle tarayıcı CORS kısıtına tabi değildir. Production ortamında * ile geniş izin vermek yerine bilinen origin listesi, credential politikası ve ortam bazlı konfigürasyon kullanılmalıdır.