corsal ne demek?

CORS (Cross-Origin Resource Sharing), web tarayıcılarının bir web sayfasının farklı bir kaynaktan (domain, protokol veya port) kaynaklara erişmesine izin verme veya engelleme mekanizmasıdır. Temel olarak, bir web uygulamasının güvenlik önlemleri nedeniyle başka bir domainden veri çekmesini kısıtlar.

**Neden CORS'a İhtiyaç Duyulur?**

Tarayıcılar, aynı kaynak politikası (Same-Origin Policy) adı verilen bir güvenlik mekanizması uygular. Bu politika, kötü niyetli web sitelerinin kullanıcı verilerine erişmesini veya diğer sitelere zararlı istekler göndermesini engeller. Ancak, meşru durumlarda da farklı kaynaklardan veri alışverişi yapmak gerekebilir. İşte CORS, bu tür senaryolar için kontrollü bir şekilde kaynak paylaşımına izin verir.

**CORS Nasıl Çalışır?**

1.  **Tarayıcı İsteği:** Bir web sayfası farklı bir kaynaktan bir kaynak talep ettiğinde (örneğin, bir API'ye AJAX isteği gönderdiğinde), tarayıcı otomatik olarak isteğe `Origin` başlığını ekler. Bu başlık, isteği başlatan web sayfasının kaynağını belirtir.
2.  **Sunucu Yanıtı:** Sunucu, `Origin` başlığını inceler ve isteğe izin verip vermeyeceğine karar verir. Eğer sunucu isteğe izin verirse, yanıta `Access-Control-Allow-Origin` başlığını ekler. Bu başlık, hangi kaynakların kaynağa erişmesine izin verildiğini belirtir.
3.  **Tarayıcı Kontrolü:** Tarayıcı, sunucu yanıtındaki `Access-Control-Allow-Origin` başlığını kontrol eder. Eğer `Origin` değeri `Access-Control-Allow-Origin` başlığında belirtilen kaynaklardan biriyle eşleşirse veya `*` (herkes) ise, tarayıcı isteğin tamamlanmasına izin verir. Aksi takdirde, tarayıcı isteği engeller ve bir CORS hatası verir.

**Önemli Kavramlar:**

*   **Aynı Kaynak Politikası:** Bir web uygulamasının sadece aynı kaynaktan gelen kaynaklara erişmesine izin veren güvenlik mekanizmasıdır.  [Aynı Kaynak Politikası](https://www.nedemek.page/kavramlar/aynı%20kaynak%20politikası)
*   **Origin:** Bir URL'nin protokolü, domain adı ve port numarasının birleşimidir. [Origin](https://www.nedemek.page/kavramlar/origin)
*   **Access-Control-Allow-Origin:** Sunucunun CORS isteğini kabul ettiğini ve belirtilen kaynağın kaynağa erişebileceğini belirten HTTP yanıt başlığıdır. [Access-Control-Allow-Origin](https://www.nedemek.page/kavramlar/Access-Control-Allow-Origin)
*   **Preflight İstek (OPTIONS):** Bazı CORS istekleri (özellikle `PUT`, `DELETE` gibi HTTP metotları kullanan veya özel başlıklar içeren istekler), sunucunun isteği işleyip işlemeyeceğini önceden kontrol etmek için bir "preflight" isteği (OPTIONS metoduyla) gönderir. [Preflight İstek](https://www.nedemek.page/kavramlar/preflight%20istek)

CORS, web güvenliğinin önemli bir parçasıdır ve web geliştiricilerinin farklı kaynaklardan veri alışverişi yaparken güvenlik risklerini göz önünde bulundurmalarını sağlar.