Nedir bu CORS !

Nedir bu CORS !
CORS (Cross - Origin Resource Sharing )

Kısaca bir kökende çalışan web uygulamasının, farklı bir kökende yer alan web uygulamasına erişim izni kontrolünü sağlayan mekanizmadır. Bkz.

💡
ChatGPT 'ye göre

CORS (Cross-Origin Resource Sharing), web uygulamalarında farklı alan adlarından (domain) kaynaklara erişim sağlamak için kullanılan bir güvenlik mekanizmasıdır. Modern web tarayıcıları, güvenlik nedeniyle bir web sayfasının, farklı bir alan adına sahip bir kaynağa (API, font, resim, vb.) doğrudan erişmesini kısıtlar. CORS, bu kısıtlamaların belirli kurallar çerçevesinde kaldırılmasına olanak tanır.

CORS'un Temel Çalışma Prensibi:

CORS, bir tarayıcıdan gelen HTTP isteğinin "hangi alanlardan" (origin) kaynaklara erişebileceğini belirler. "Origin" burada, bir web sayfasının protokolü (http/https), alan adı (domain) ve port numarasını ifade eder. Bir kaynağa yapılacak istek, hedef sunucu tarafından CORS başlıklarıyla onaylanmalıdır.

Örneğin, www.ornek.com alan adından gelen bir istek, www.digerornek.com alan adındaki bir API'ye yönlendirilirse, bu iki alan adı farklı kabul edilir ve CORS kısıtlaması devreye girer.

CORS ile İlgili Başlıca Başlıklar:

  1. Access-Control-Allow-Origin: Hedef sunucu, hangi alan adlarının (origin) kaynaklarına erişebileceğini belirten başlıktır. Bu başlık, sadece belirli alanlara izin verilecek şekilde ayarlanabilir. Örneğin:

    • Access-Control-Allow-Origin: * → Tüm domainlere izin verir.
    • Access-Control-Allow-Origin: https://www.ornek.com → Sadece belirli bir alan adına izin verir.
  2. Access-Control-Allow-Methods: Hangi HTTP metodlarının (GET, POST, PUT, DELETE, vb.) kabul edileceğini belirler.

  3. Access-Control-Allow-Headers: İsteklerde hangi başlıkların (header) kullanılabileceğini tanımlar.

  4. Preflight Request (Ön Hazırlık İsteği): Eğer bir istek, tarayıcı tarafından "güvenli olmayan" bir şekilde (örneğin, özel başlıklar veya metodlar kullanılarak) yapılacaksa, tarayıcı önce hedef sunucuya bir "preflight" isteği gönderir. Bu, hedef sunucunun hangi tür isteklere izin verdiğini sorgulayan bir tür kontrol isteğidir.

CORS'un Amacı:

CORS, bir web sayfasının, başka bir kaynağa (API'ye, servise) güvenli bir şekilde erişmesini sağlamayı amaçlar. Bu, kötü niyetli sitelerin (Cross-Site Request Forgery - CSRF veya Cross-Site Scripting - XSS gibi saldırılarla) kullanıcıların bilgilerine izinsiz erişmesini engellemeye yardımcı olur.

Örnek CORS Yanıt Başlıkları:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://www.ornek.com
Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-Headers: Content-Type

Özetle, CORS, bir web uygulamasının dış kaynaklara erişirken güvenliği sağlamak için kullanılan bir mekanizmadır ve düzgün çalışabilmesi için hem istemci (tarayıcı) hem de sunucu tarafında belirli ayarların yapılması gerekmektedir.