CORS nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
CORS (Cross-Origin Resource Sharing) — farklı alan adı, port veya protokolden kaynaklara kaynakların erişimine izin veren bir mekanizmadır. Bu, ek HTTP başlıkları kullanılarak yapılır.
Varsayılan olarak, tarayıcılar Same-Origin Policy (SOP) politikasını uygular, bu da aynı sayfada çalışan betiklerin başka bir kaynaktan (alan adı, port, protokol) gelen verilere erişimini engeller. CORS, bu politikayı kontrollü bir şekilde gevşetir ve sunucuya, çapraz alan isteklerini açıkça izin verme imkanı tanır.
CORS nasıl çalışır:
- Basit istek: Eğer istek belirli kriterleri karşılıyorsa (örneğin, GET veya POST yöntemi kullanılırsa, yalnızca belirli başlıklar izin verilmişse), tarayıcı doğrudan
Originbaşlığı ile birlikte isteği gönderir. Bu başlık, isteğin kaynağını belirtir. Sunucu, bu başlığı aldığında,Access-Control-Allow-Originbaşlığı ile izin verilen kaynağı yanıtlar. - Preflight:
PUT,DELETEgibi yöntemler veya özel başlıklar kullanıldığında, tarayıcı önce bir ön kontrol (OPTIONS) isteği gönderir. Bu istek, sunucuya ana isteğin izin verilip verilmediğini sorar. Sunucu, izin verilen yöntemleri, başlıkları ve kaynakları belirten başlıklar ile yanıt verir. Eğer preflight başarılı olursa, tarayıcı gerçek isteği gönderir.
CORS'un temel başlıkları:
Origin: Tarayıcı tarafından istekle gönderilir, isteği yapan sayfanın kaynağını (alan adı, port, protokol) belirtir.Access-Control-Allow-Origin: Sunucu tarafından yanıtla gönderilir, yanıtın alınabileceği kaynağı belirtir. Belirli bir alan adı,*veya dinamik olarakOriginbaşlığına göre ayarlanabilir.Access-Control-Allow-Methods: Preflight yanıtında sunucu tarafından gönderilir, izin verilen HTTP yöntemlerini belirtir (GET, POST, PUT, DELETE vb.).Access-Control-Allow-Headers: Preflight yanıtında sunucu tarafından gönderilir, izin verilen başlıkları belirtir.Access-Control-Allow-Credentials: Sunucu tarafından yanıtla gönderilir, çerezlerin ve diğer kimlik bilgilerinin istekle kabul edilip edilmeyeceğini belirtir.
Örnek yanıt başlıkları:
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
CORS, API etkileşimi, font yükleme, CDN ile Web Font kullanımı gibi çapraz alan AJAX istekleri kullanan birçok web uygulamasının düzgün çalışması için gereklidir. Sunucuda doğru CORS yapılandırması, güvenlik ve fonksiyonellik açısından kritiktir.