Yetenek

CORS Politika Kuralı

API ekiplerini tarayıcı CORS hatalarından kurtarın; preflight ve response başlıklarını tek kuraldan yönetin.

TR7 CORS Politika Kuralı, cross-origin API erişimlerinde gereken CORS başlıklarını uygulama koduna dokunmadan ADC katmanında yönetir. Origin allow-list, izin verilen method'lar, izin verilen header'lar, credentials davranışı ve preflight cache süresi tek politika içinde tanımlanabilir. Bu yaklaşım, frontend ve API ekiplerinin her servis için ayrı ayrı CORS kodu yazmasını engeller. Uygulama response üretir; TR7 tarayıcının beklediği CORS başlıklarını merkezi politika olarak ekler, preflight isteklerine uygun yanıt verir ve actual response tarafında gerekli başlıkları tamamlar. Politika vService, host, path veya farklı trafik koşullarına göre uygulanabilir. Böylece public API, admin API, partner API ve internal API aynı cihaz üzerinde farklı CORS davranışlarıyla çalışabilir. Sonuç: TR7, CORS yönetimini uygulama framework ayarlarından çıkarır; API güvenliği ve uygulama teslim katmanında merkezi, denetlenebilir ve tekrar kullanılabilir bir kurala dönüştürür.

5
Yapılandırılabilir CORS parametresi: Origin, Methods, Headers, Credentials, Max-Age
2
Yönetilen istek tipi: OPTIONS preflight ve actual response
1
Merkezi kural — tüm vService ve path'lerde tutarlı CORS politikası

CORS uygulama koduna bırakıldığında, her API ayrı bir tarayıcı uyumluluk problemine dönüşür.

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.

Yaklaşımımız

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.

Origin allow-list yalnız izin verilen kaynakları kabul eder

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.

Preflight istekleri uygulamaya yük bindirmeden cevaplanır

OPTIONS preflight isteklerinde gerekli CORS başlıkları TR7 tarafından üretilebilir. Böylece uygulama yalnız gerçek API isteğine odaklanır.

Actual response başlıkları tarayıcı beklentisine göre tamamlanı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.

vService ve path bazlı politika farklı API'leri ayırır

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.

Yetenekler

CORS Politika Kuralı, tek aksiyondan preflight ve actual response yönetimi sağlayarak API yayınlama sürecini sadeleştirir.

Tek kural preflight ve actual response CORS başlıklarını birlikte yönetir

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.

Origin allow-list yalnız güvenilen frontend kaynaklarına izin verir

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.

Regex destekli origin eşleşmesi çoklu subdomain yapılarını kolaylaştırı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.

Credentials toggle cookie ve auth header kullanımını kontrollü açar

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.

Allowed methods listesi API yüzeyini tarayıcı seviyesinde sınırlar

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.

Allowed headers listesi özel header kullanımını düzenler

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.

Preflight max-age cache tarayıcı istek yükünü azaltır

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.

Per-vService uygulama her API için ayrı CORS standardı sağlar

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.

Per-path uygulama aynı serviste farklı endpoint davranışı sağlar

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.

Trafik kuralları motoruyla koşullu CORS davranışı kurulabilir

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.

Uygulama framework bağımlılığı olmadan CORS standardı uygulanır

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.

Audit ve merkezi değişiklik yönetimi CORS riskini azaltır

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.

Operasyonel derinlik

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.

01

Origin eşleşmesi

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.

02

Credentials davranışı

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.

03

Preflight yanıtı

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.

04

Max-age dengesi

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.

05

Path kapsamı

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.

06

Audit kaydı

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.

Hangi senaryolarda kullanılır

Frontend API CORS hatasını uygulama koduna dokunmadan çözme

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.

Çoklu tenant subdomain'leri için regex origin politikası

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 API erişiminde dar origin ve header listesi

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.

Cookie kullanan SSO akışında credentials davranışını yönetme

SSO veya federasyon akışlarında cross-origin cookie gerekebilir. TR7 credentials toggle ve dar Origin listesiyle bu davranışı kontrollü hale getirir.

Public ve admin API path'lerinde farklı CORS uygulama

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.

Sık sorulanlar

TR7 CORS kuralı preflight isteklerini nasıl yönetir?
TR7, OPTIONS preflight isteklerine gerekli Access-Control-Allow-Methods, Access-Control-Allow-Headers ve Access-Control-Max-Age başlıklarını merkezi CORS politikasından üretebilir. Bu sayede kurum servisi preflight yüküyle uğraşmaz; yalnızca gerçek API isteğine odaklanır.
Origin allow-list wildcard kullanımına zorunlu bırakır mı?
Hayır. TR7 CORS politikası izin verilen Origin değerlerini açık liste veya regex kuralıyla tanımlamayı destekler. Wildcard kullanımına gerek kalmadan güvenilen frontend kaynaklarına erişim verilebilir; bu, API yüzeyini gereksiz yere açmadan tarayıcı uyumluluğu sağlar.
Credentials davranışını açmak güvenli midir?
Credentials aktif olduğunda cookie ve Authorization header cross-origin isteklerde kullanılabilir. Bu modda Origin allow-list'in dar ve net olması kritiktir; credentials ile birlikte wildcard Origin kullanımı güvenli bir yapılandırma değildir. TR7, bu iki ayarı birlikte merkezi politika noktasında yönetir.
Aynı cihazda farklı API'ler için farklı CORS politikası uygulanabilir mi?
Evet. CORS politikası vService veya path bazında bağımsız olarak tanımlanabilir. Public API, partner API, admin API ve internal API aynı cihaz üzerinde farklı Origin listeleri, farklı method izinleri ve farklı credentials davranışlarıyla çalışabilir.
Max-Age değeri ne kadar olmalıdır?
Uygun Max-Age, sık API çağrılarında OPTIONS trafiğini azaltır; ancak çok uzun bir değer CORS politika değişikliklerinin tarayıcı cache'i nedeniyle geç yansımasına neden olabilir. Kritik veya sık güncellenen API'lerde daha kısa değer tercih edilir. TR7 bu parametreyi servis ihtiyacına göre yapılandırılabilir kılar.
CORS politikası uygulama framework'üne bağlı mıdır?
Hayır. TR7 CORS Politika Kuralı ADC katmanında çalışır; uygulama dili veya framework'ünden bağımsızdır. Legacy servisler de dahil olmak üzere tüm API'ler aynı merkezi CORS politikasıyla yayınlanabilir. Uygulama ekipleri framework ayarlarına dokunmadan CORS uyumluluğu elde eder.

CORS yönetimini uygulama kodundan çıkarın

Preflight, response başlıkları, origin allow-list ve credentials davranışını tek ADC kuralından yönetin. Kendi servislerinizle canlı bir kurulumda gezdirelim.