Modern web uygulamaları genellikle farklı domain, subdomain veya port üzerinden çalışan API'lere erişir. Tarayıcı bu erişimi CORS politikasıyla sınırlar. API doğru Access-Control-Allow-* başlıklarını dönmezse istek sunucu tarafında çalışsa bile tarayıcı tarafından engellenir. Sonuç kullanıcı için kırık uygulama, ekip için zor teşhis edilen CORS hatasıdır.
Bu problem çoğu kurumda uygulama ekiplerine dağıtılır. Her servis kendi framework ayarında Origin, Method, Header, Credentials ve Max-Age davranışını ayrı ayrı tanımlar. Servis sayısı arttıkça aynı CORS politikasının farklı uygulamalarda farklı yazılması kaçınılmaz hale gelir.
Yanlış CORS ayarı güvenlik riski de üretir. Geliştirme sırasında hızlı çözüm olarak wildcard Origin açılır, credentials ile birlikte fazla geniş izinler verilir veya preflight davranışı eksik bırakılır. Bu tür ayarlar production'a taşındığında API yüzeyi gereksiz şekilde açılır.
Doğru yaklaşım, CORS politikasını merkezi bir response/request kuralı olarak yönetmektir. Origin allow-list, credentials, allowed methods, allowed headers ve preflight cache tek yerde tanımlanmalı; uygulama koduna dağılmamalıdır.
TR7 CORS Politika Kuralı bu modeli sunar: preflight ve actual response CORS başlıklarını tek aksiyondan, vService veya path seviyesinde yönetilebilir hale getirir.
TR7 CORS politikası, origin doğrulama, preflight yönetimi, response başlıkları ve koşullu uygulama mantığını tek kural altında birleştirir.
TR7, gelen Origin değerini tanımlı allow-list ile karşılaştırabilir. Liste sabit domain'ler veya regex tabanlı daha esnek eşleşmeler içerebilir.
OPTIONS preflight isteklerinde gerekli CORS başlıkları TR7 tarafından üretilebilir. Böylece uygulama yalnız gerçek API isteğine odaklanır.
Access-Control-Allow-Origin, Allow-Methods, Allow-Headers, Allow-Credentials ve Max-Age gibi başlıklar merkezi politika üzerinden eklenir. Tarayıcı uyumluluğu uygulama kodundan bağımsız hale gelir.
Aynı cihaz üzerinde farklı API yüzeyleri farklı CORS davranışıyla çalışabilir. Public API daha kontrollü, partner API daha dar, internal API ise ayrı allow-list ile yönetilebilir.
CORS Politika Kuralı, tek aksiyondan preflight ve actual response yönetimi sağlayarak API yayınlama sürecini sadeleştirir.
TR7 CORS aksiyonu hem OPTIONS preflight isteklerini hem de gerçek API response başlıklarını aynı politika altında ele alabilir. Bu, uygulama ekiplerinin preflight ve actual response davranışını ayrı ayrı kodlamasını engeller. Politika bir kez tanımlanır ve ilgili vService veya path üzerinde uygulanır. Operasyon tarafı CORS davranışını merkezi olarak yönetebilir.
CORS politikasında izin verilen Origin değerleri açıkça tanımlanabilir. Bu liste belirli domain'lerden, subdomain kalıplarından veya regex tabanlı eşleşmelerden oluşabilir. Wildcard kullanımına mecbur kalmadan güvenilen frontend uygulamalarına erişim verilir. API yüzeyi gereksiz kaynaklara açılmadan tarayıcı erişimi sağlanır.
Kurumlar sıkça müşteri, tenant veya ortam bazlı subdomain yapıları kullanır. Regex tabanlı origin eşleşmesi, her subdomain'i tek tek yazmadan kontrollü izin politikası kurmayı sağlar. Örneğin belirli domain ağacı altındaki tenant frontend'leri kabul edilebilir. Bu esneklik, wildcard açmadan ölçekli CORS yönetimi sağlar.
Access-Control-Allow-Credentials davranışı merkezi olarak açılıp kapatılabilir. Cookie veya Authorization header ile çalışan frontend'lerde bu ayar kritik önemdedir. Credentials açıkken Origin allow-list'in dar tutulması gerekir. TR7, bu davranışı uygulama ekiplerinin dağınık ayarlarından çıkarıp tek policy noktasına taşır.
GET, POST, PUT, PATCH, DELETE veya OPTIONS gibi method'lar politika içinde tanımlanabilir. Tarayıcı preflight sırasında yalnız izin verilen method'ları kabul eder. Bu, API'nin istemci tarafında hangi işlem tiplerine açık olduğunu netleştirir. Güvenlik ve geliştirici deneyimi aynı listeden yönetilir.
Authorization, Content-Type, X-Request-ID veya özel uygulama header'ları allow-list içinde tanımlanabilir. Tarayıcı preflight isteğinde bu header'ların kullanılıp kullanılamayacağını kontrol eder. Eksik header izinleri frontend hatasına, fazla geniş header izinleri gereksiz yüzey açılmasına neden olur. TR7 bu dengeyi merkezi olarak yönetir.
Access-Control-Max-Age değeriyle tarayıcının preflight sonucunu ne kadar süre cache'leyeceği ayarlanabilir. Uygun max-age değeri, sık API çağrılarında OPTIONS trafiğini azaltır. Çok kısa değer gereksiz preflight yükü, çok uzun değer ise policy değişikliklerinin geç yansıması anlamına gelebilir. TR7 bu ayarı servis ihtiyacına göre yapılandırılabilir hale getirir.
Her vService kendi CORS politikasına sahip olabilir. Public API, partner API, admin API veya internal API farklı origin ve method listeleriyle çalışabilir. Bu model tek global CORS ayarının tüm API'lere fazla geniş uygulanmasını engeller. Operatör servis bazında güvenlik sınırı kurar.
Aynı vService içinde farklı path'ler için farklı CORS politikaları uygulanabilir. Örneğin `/public/api` daha geniş origin listesiyle, `/admin/api` yalnız belirli yönetim frontend'iyle çalışabilir. Bu, API yüzeyini endpoint seviyesinde ayrıştırır. Uygulama kodunda karmaşık CORS if blokları yazmaya gerek kalmaz.
CORS aksiyonu trafik kuralları motorunun parçası olarak kullanılabilir. Host, path, header, method veya farklı koşullara göre CORS başlıkları uygulanabilir. Bu sayede tek cihaz üzerinde çok farklı yayınlama modelleri yönetilebilir. CORS politikası statik ayar değil, bağlama duyarlı trafik kuralı haline gelir.
CORS davranışı uygulama framework'lerine dağıtıldığında her dil ve servis farklı ayar mantığı gerektirir. TR7, bu davranışı ADC katmanına taşıyarak uygulama bağımlılığını azaltır. Uygulama ekipleri yalnız API iş mantığına odaklanırken, CORS standardı merkezi olarak korunur. Legacy ve modern servisler aynı politika modeliyle yayınlanabilir.
CORS politikası merkezi konfigürasyon içinde değiştirildiğinde audit ve rollback süreçlerine dahil edilebilir. Kim hangi Origin'i, hangi method'u veya credentials davranışını açtı sorusu takip edilebilir. Bu özellikle güvenlik incelemelerinde önemlidir. Dağınık uygulama ayarları yerine denetlenebilir CORS yönetimi sağlanır.
CORS Politika Kuralı; Origin eşleşmesi, credentials davranışı, preflight yanıtı, max-age dengesi, path kapsamı ve audit görünürlüğüyle birlikte işletilir.
Gelen Origin değeri allow-list veya regex kurallarıyla karşılaştırılabilir. Eşleşme yoksa CORS başlıkları eklenmeyebilir veya politika gereğine göre reddetme davranışı uygulanabilir. Wildcard yerine açık liste kullanımı önerilir.
Credentials aktif olduğunda cookie ve auth header gibi kimlik bilgileri cross-origin isteklerde kullanılabilir. Bu modda Origin politikasının dar ve net olması önemlidir. Credentials ile wildcard Origin birlikte güvenli bir varsayım değildir.
OPTIONS istekleri tarayıcının method ve header izni kontrolü için gönderilir. TR7 gerekli Allow-* başlıklarını üreterek preflight yanıtını merkezi şekilde yönetebilir. Bu, kurum servisinin gereksiz OPTIONS yüküyle uğraşmasını azaltır.
Preflight cache süresi performans ve politika güncelliği arasında denge gerektirir. Uzun süre daha az OPTIONS trafiği üretir, fakat CORS değişiklikleri tarayıcı cache'i nedeniyle geç hissedilebilir. Kritik API'lerde bu değer dikkatle seçilmelidir.
CORS politikası belirli path veya host koşullarına bağlanabilir. Bu, aynı vService içinde farklı API yüzeylerine farklı CORS davranışı vermeyi sağlar. Admin endpoint'leri ile public endpoint'ler aynı izinlere sahip olmak zorunda değildir.
CORS politika değişiklikleri merkezi konfigürasyon ve audit sürecinde izlenebilir. Origin listesi veya credentials değişikliği güvenlik açısından önemli kabul edilmelidir. Değişiklik geçmişi rollback ve compliance için değer taşır.
Frontend uygulama farklı domaindeki API'ye eriştiğinde tarayıcı CORS hatası alabilir. TR7 üzerinden doğru Origin, method ve header politikası eklenerek sorun merkezi olarak giderilir.
SaaS ortamında her tenant kendi subdomain'iyle frontend çalıştırabilir. Regex destekli allow-list ile tüm tenant domain ağacı kontrollü şekilde kabul edilir.
Partner uygulamalar yalnız belirli Origin ve Authorization header ile API'ye erişebilir. TR7 CORS kuralı bu izinleri merkezi olarak tanımlar ve gereksiz header/method yüzeyini kapatır.
SSO veya federasyon akışlarında cross-origin cookie gerekebilir. TR7 credentials toggle ve dar Origin listesiyle bu davranışı kontrollü hale getirir.
Aynı vService içinde public endpoint daha geniş, admin endpoint daha dar CORS politikasıyla çalışabilir. Bu ayrım uygulama koduna yazılmadan trafik kuralı üzerinden uygulanır.
Preflight, response başlıkları, origin allow-list ve credentials davranışını tek ADC kuralından yönetin. Kendi servislerinizle canlı bir kurulumda gezdirelim.