Skip to content
Smarter by Design.Simpler for Business

Replace HTTP Header Content ​

Replace HTTP Header Content Aksiyonu Nedir? ​

Replace HTTP Header Content aksiyonu, HTTP trafiğindeki bir başlığın (header) içeriğini REGEX (düzenli ifade) ile eşleştirip yeniden yazmak için kullanılır.

Eşleşme sağlandığında başlığın TAMAMI yeniden yazılır

Bu aksiyon "eşleşen kısmı değiştirip gerisini bırakmaz". Düzenli ifade başlık değerinin herhangi bir yerinde eşleşirse, o değerin tamamı yeni içerikle değiştirilir.

Korunması istenen bölümler, düzenli ifadede yakalama grubuyla alınmalı ve yeni içerikte \1, \2 gibi referanslarla yeniden yazılmalıdır.

Örnek: Location: http://example.com/dashboard başlığında yalnızca protokolü değiştirmek için:

  • Düzenli ifade: ^http://(.*)$: geri kalan kısım 1. gruba alınır
  • Yeni içerik: https://\1: grup geri yazılır

Yakalama grubu kullanılmazsa başlığın geri kalanı kaybolur.

Bu aksiyon hem istek (request) hem de yanıt (response) aşamasında çalışabilir. Execution Level seçimine göre başlık içeriği, Kurum Servisine gönderilmeden önce istekte veya istemciye döndürülmeden önce yanıtta değiştirilir.

1 · Orijinal başlık
Location: http://example.com/dashboard
REGEX http://(.+)  →  Replacement https://\1
2 · Değiştirilmiş başlık
Location: https://example.com/dashboard
Capture group (.+) → \1 ile domain ve path korunur, yalnızca protokol değişir.

Set HTTP Header ile Farkı

Set HTTP Header aksiyonu başlığa sabit bir değer yazar; başlık yoksa oluşturur ve akıllı değişken kullanımını destekler.

Bu aksiyon ise başlığın mevcut değerini düzenli ifadeyle eşleştirerek yeniden yazar; başlık yoksa oluşturmaz ve akıllı değişken desteklemez. Mevcut değerin bir bölümünü korumak gerektiğinde bu aksiyon kullanılır.

Replace HTTP Header Content Aksiyonunun Önemi ​

Bazı senaryolarda başlığın mevcut değerine bakılarak yeniden yazılması gerekir. Düzenli ifade tabanlı değiştirme, yakalama gruplarıyla birlikte bu tür dönüşümler için güçlü bir araçtır.

Replace HTTP Header Content aksiyonu;

  • Başlık değerlerinin bir bölümü korunarak yeniden yazılmasını sağlar,
  • URL rewriting işlemleri için kullanılabilir (örn: Location başlığı),
  • Domain veya protokol değişikliklerini kolaylaştırır,
  • Cookie domain'lerinin dinamik olarak değiştirilmesini mümkün kılar,
  • Birden fazla değer içeren başlıklarda seçici değişiklik yapılmasını sağlar.

Bu nedenle Replace HTTP Header Content aksiyonu, karmaşık başlık manipülasyonları için vazgeçilmez bir araçtır.

Eşleştirme Modları ​

Bu aksiyon iki farklı eşleştirme modu sunar:

ModAçıklama
Replace whole headerBaşlık değerinin tamamını tek parça olarak ele alır. Düzenli ifade değer içinde herhangi bir yerde eşleşirse değerin tamamı yeni içerikle değiştirilir.
Replace values separated by commaBaşlık değerini yalnızca virgülle ayrılmış parçalara böler ve her parçayı ayrı ayrı eşleştirir. Eşleşen parçanın tamamı yeni içerikle değiştirilir; diğer parçalar korunur.
Mod Karşılaştırması: örnek

Başlık: Accept-Language: en-US, tr-TR, de-DE

REGEX: tr-TR  ·  Replacement: en-GB

Replace whole header modu:

  • tr-TR ifadesi değerin içinde bulunur → eşleşme sağlanır
  • Değerin tamamı yeni içerikle değiştirilir
  • Sonuç: Accept-Language: en-GB: diğer diller kaybolur

Replace values separated by comma modu:

  • Her değer ayrı kontrol edilir: en-US, tr-TR, de-DE
  • tr-TR eşleşir ve en-GB olarak değiştirilir
  • Sonuç: Accept-Language: en-US, en-GB, de-DE

Kullanılabildiği vService Tipleri ​

HTTP
L7 TCP
Network

Çalışma Anı ​

İstek Anı (On Request)
Cevap Anı (On Response)

Nasıl Eklenir? ​

Yeni bir Replace HTTP Header Content Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:

  1. Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
  2. Load Balancer → Actions → Add adımları takip edilir.
  3. Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
  4. Action Type olarak Replace HTTP Header Content seçilir.
  5. Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
  6. Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
  7. Add butonuna tıklanarak aksiyon eklenir.

Replace HTTP Header Content Aksiyonu Ekleme Formu ​

Replace HTTP Header Content Aksiyonu Ekleme FormuReplace HTTP Header Content Aksiyonu Ekleme Formu

INFO

Action Name ​

Oluşturulacak olan aksiyona benzersiz ve açıklayıcı bir isim girilir.

INFO

Action Type ​

Aksiyon tipi olarak Replace HTTP Header Content seçilir.

INFO

Execution Level ​

Aksiyonun hangi aşamada çalıştırılacağını belirler.

  • On Request: Aksiyon, istek ilgili Kurum Servisine iletilmeden önce uygulanır. Bu seviye, istek üzerinde değişiklik yapılması veya Kurum Servisine ek bilgi iletilmesi gereken durumlarda kullanılır.
  • On Response: Aksiyon, yanıt istemciye iletilmeden önce uygulanır. Bu seviye, istemciye gönderilen yanıt üzerinde düzenleme veya ekleme yapılması gereken durumlarda kullanılır.

INFO

Hit Counter Varsayılan: Kapalı ​

Hit Counter, aksiyonun her çalışmasını sayar (aksiyonun kendi koşuluyla birlikte değerlendirilir; Deny gibi sonlandırıcı aksiyonlarda bile sayım kaybolmaz). Aksiyon bazlı hız ve toplamlar, vService panosundaki Action Hits sekmesinde ve canlı istatistik ekranında görüntülenir; listelerde ayrıca bir kolon olarak görünmez. Sayaç kümülatiftir; elle sıfırlama arayüzü yoktur: sayılan aksiyon kümesi değiştiğinde veya vService yeniden yüklendiğinde sıfırdan başlar, geçmiş ise panoda hız (hit/s) olarak korunur.

Sayaç, aksiyonun koşulu sağlandığında artar; düzenli ifadenin gerçekten eşleşip eşleşmediğine bakmaz.

INFO

Set Variable on Hit ​

Aksiyon her çalıştığında değeri atanacak bir değişken adı girilebilir (isteğe bağlı; varsayılan boş). Ad; harf, rakam ve alt çizgiden oluşabilir (en fazla 32 karakter). Aksiyon tetiklendiğinde değişken 1 değerine atanır ve aynı vService'teki diğer koşul ve aksiyonlarda %TR7VAR(ad) akıllı değişkeniyle okunarak zincirleme davranışlar kurulabilir.

INFO

Header to Replace Zorunlu ​

Değiştirilecek HTTP başlığının adı bu alana girilir.

Başlık adları büyük/küçük harf duyarsızdır.

Sıkça Değiştirilen Başlıklar
  • Location: Redirect URL'leri
  • Set-Cookie: Cookie domain/path değerleri
  • Host: Host adı değiştirme
  • Refresh: Yönlendirme URL'leri

INFO

Regex to Match Zorunlu ​

Eşleşme büyük/küçük harfe duyarlıdır

Düzenli ifade harf duyarlı çalışır ve formda bunu kapatan bir seçenek yoktur. Harf duyarsız eşleşme gerekiyorsa ifadenin başına (?i) yazılmalıdır.

Alanın yanındaki test butonuyla ifade örnek bir girdi üzerinde denenebilir; yakalama grupları listelenir ve yeni içerikte kullanılacak \1, \2 referansları buradan görülebilir.

Başlık değerinde aranacak REGEX (düzenli ifade) pattern'i bu alana girilir.

REGEX, PCRE (Perl Compatible Regular Expressions) söz dizimini destekler.

Yaygın REGEX Pattern'leri
PatternAçıklama
http://Protokol eşleştirme
\.example\.comDomain eşleştirme (noktalar escape edilmeli)
^(.*)$Tüm değeri yakala (capture group)
domain=([^;]+)Cookie domain değerini yakala

WARNING

  • Özel karakterler (., *, ?, + vb.) escape edilmelidir: \., \*
  • Capture group'lar \1, \2 şeklinde referans edilebilir

INFO

Match Type Varsayılan: Replace whole header ​

Eşleştirme modunun seçildiği alandır.

  • Replace whole header → Tüm başlık değerini REGEX ile eşleştirir. Düzenli ifade değerin herhangi bir yerinde eşleşirse değerin tamamı yeni içerikle değiştirilir.
  • Replace values separated by comma → Başlık birden fazla değer içeriyorsa (virgülle ayrılmış), her değeri ayrı ayrı REGEX ile eşleştirir. Bu mod, çoklu değer içeren başlıklarda seçici değişiklik yapmak için kullanılır.

INFO

Replacement Content Zorunlu ​

WARNING

Bu alan akıllı değişkenleri desteklemez; yalnızca sabit metin ve \1–\9 yakalama grubu referansları kullanılabilir. Grup referansları $1 değil \1 biçiminde yazılır.

Eşleşme sağlandığında başlık değerinin tamamının yerine yazılacak yeni değer bu alana girilir.

Capture group'lardan yakalanan değerler \1, \2 şeklinde kullanılabilir.

Capture Group Kullanımı: örnek

REGEX: http://(.+)  ·  Replacement: https://\1

Bu pattern, http:// ile başlayan URL'leri https:// olarak değiştirir ve domain kısmını korur.

  • Giriş: http://example.com/path
  • Çıkış: https://example.com/path

INFO

Conditions ​

Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.

Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.

Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.

WARNING

Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır. Bu durumda aksiyon, ilgili vService'e gelen tüm trafiğe uygulanır.

Canlı ortamlarda, koşul tanımlanmadan aksiyon kullanılması beklenmeyen durumlara (servis kesintilerine) yol açabilir. Bu nedenle aksiyon oluşturulurken mutlaka en az bir koşul tanımlanması önerilir.

INFO

Form Butonları ​

Add ​

Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.

Add & Repeat ​

Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.

Aksiyon EklendiAksiyon Eklendi

Davranış Ayrıntıları

  • Başlık yoksa oluşturulmaz; aksiyon sessizce geçilir.
  • Düzenli ifade eşleşmezse başlık olduğu gibi bırakılır; hata üretilmez.
  • Aynı ada sahip tüm başlık tekrarları ayrı ayrı işlenir.
  • Aksiyon Kurum Servisinden dönen yanıtlara uygulanır; TR7'nin kendi ürettiği yanıtlar (yönlendirme, engelleme, hata sayfaları) etkilenmez.
  • Aksiyonun vService başına sayı sınırı yoktur.

Düzenli ifadeyi sabitleyin

Beklenmeyen eşleşmeleri önlemek için ifade mümkün olduğunca ^ ve $ ile sabitlenmelidir. Sabitlenmemiş bir ifade, değerin ortasında geçen benzer bir metinle eşleşip başlığın tamamını yeniden yazabilir.

Operasyonel ve Güvenli Kullanım Önerileri ​

  • Doğru Modu Seçin.

    SenaryoÖnerilen Mod
    Tek değerli başlıklar (Location, Host)Replace whole header
    Çoklu değerli başlıklar (Accept-Language, Cookie)Replace values separated by comma
    Tüm değeri değiştirmekReplace whole header
    Belirli bir değeri değiştirmekReplace values separated by comma
  • REGEX'i Test Edin. Karmaşık REGEX pattern'leri beklenmedik sonuçlar üretebilir. Canlı ortama almadan önce test ortamında doğrulayın.

  • Özel Karakterleri Escape Edin. REGEX'te özel anlam taşıyan karakterler (., *, ?, +, [, ], (, ), ^, $, |, \) ters slash ile escape edilmelidir: example.com → example\.com, path?query → path\?query.

  • Capture group'ları kullanılır. Değerin bir kısmının korunması gerektiğinde ilgili bölüm () ile yakalanır ve replacement alanında \1, \2 ile referans verilir.

  • Set Header'ı Düşünün. Eğer tüm başlık değerini bilinen bir değerle değiştirmek istiyorsanız, Set HTTP Header aksiyonu daha basit ve performanslı olabilir.

Canlı Ortamlarda Yaygın Kullanım Senaryoları ​

Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.

Senaryo 1: HTTP'den HTTPS'e Redirect URL Dönüştürme ​

Problem: Kurum Servisi SSL termination yapıldığını bilmiyor ve redirect URL'lerini hala http:// protokolü ile döndürüyor. Kullanıcı HTTPS ile gelip HTTP redirect alınca tarayıcı "Mixed Content" uyarısı veriyor ve güvenlik sorunu oluşuyor.

Çözüm: Location başlığındaki HTTP URL'lerini REGEX ile HTTPS'e çevirin ve protokol tutarsızlığını düzeltin.

Konfigürasyon:

  • Execution Level: On Response
  • Header to Replace: Location
  • Regex to Match: http://(.+)
  • Match Type: Replace whole header
  • Replacement Content: https://\1
  • Conditions:

Sonuç:

  • ✅ Protokol uyumluluğu → Tüm redirect URL'leri HTTPS olur.
  • ✅ Mixed content çözümü → Tarayıcı uyarısı ortadan kalkar.
  • ✅ Capture group → (.+) ile domain ve path korunur, sadece protokol değişir.
  • ✅ SEO koruması → 301/302 redirect'lerde HTTPS kullanımı sağlanır.

Örnek Dönüşüm:

  • Kurum Servisi: Location: http://example.com/dashboard
  • TR7 değiştirme: Location: https://example.com/dashboard

Problem: Kurum Servisi internal domain (internal.example.com) ile cookie set ediyor. Ancak TR7'nin external domain'i farklı (example.com). Kullanıcılar external domain'den giriş yapıyor ama cookie internal domain'e ait olduğundan tarayıcı cookie'yi kabul etmiyor ve oturum açılamıyor.

Çözüm: Set-Cookie başlığındaki iç alan adı, çerezin geri kalanı yakalama gruplarıyla korunarak genel alan adına çevrilir.

Konfigürasyon:

  • Execution Level: On Response
  • Header to Replace: Set-Cookie
  • Regex to Match: (.*)domain=internal\.example\.com(.*)
  • Match Type: Replace whole header
  • Replacement Content: \1domain=.example.com\2
  • Conditions:

Sonuç:

  • ✅ Cookie erişimi → Wildcard domain ile tüm subdomain'ler cookie'yi kullanabilir.
  • ✅ Oturum sürekliliği → Internal-external geçişlerde oturum kopması olmaz.
  • ✅ SSO uyumluluğu → Birden fazla subdomain arasında single sign-on çalışır.
  • ⚠️ Yakalama grupları zorunlu → Çerezin adı, değeri ve diğer öznitelikleri \1 ve \2 ile korunur; gruplar kullanılmazsa çerez içeriği tamamen kaybolur ve oturum düşer.

Örnek Dönüşüm:

  • Kurum Servisi: Set-Cookie: session=abc123; domain=internal.example.com; Secure
  • TR7 değiştirme: Set-Cookie: session=abc123; domain=.example.com; Secure

Senaryo 3: Dahili URL'lerin Harici URL'lere Eşlenmesi ​

Problem: Kurum Servisi redirect yaparken internal hostname (internal-server:8080) kullanıyor ve bu URL istemciye dönüyor. İstemci bu internal hostname'i çözemediğinden redirect başarısız oluyor ve 404 hatası alınıyor. Ayrıca internal port numarası güvenlik açığı oluşturuyor.

Çözüm: Location başlığındaki internal URL'leri REGEX ile yakalayıp external public URL'e çevirin ve internal altyapıyı gizleyin.

Konfigürasyon:

  • Execution Level: On Response
  • Header to Replace: Location
  • Regex to Match: http://internal-server:8080/(.+)
  • Match Type: Replace whole header
  • Replacement Content: https://api.example.com/\1
  • Conditions:

Sonuç:

  • ✅ URL mapping → Internal URL'ler hiç dışarı sızmaz.
  • ✅ Güvenlik → Internal altyapı bilgisi korunur, port ve hostname gizlenir.
  • ✅ Kullanıcı deneyimi → Redirect'ler doğru URL'e yönlendirir, 404 hatası ortadan kalkar.
  • ✅ Path korunur → (.+) capture group ile path kısmı \1 olarak korunur.

Örnek Dönüşüm:

  • Kurum Servisi: Location: http://internal-server:8080/api/v1/status
  • TR7 değiştirme: Location: https://api.example.com/api/v1/status

Senaryo 4: Port Numarası Kaldırma ​

Problem: Kurum Servisi redirect URL'lerinde gereksiz port numaraları (https://example.com:443/path veya http://example.com:80/path) kullanıyor. Bu standart olmayan URL'ler bazı client'larda sorun çıkarıyor ve URL'ler estetik açıdan kötü görünüyor. Analytics tool'ları farklı URL olarak algılıyor.

Çözüm: Location başlığındaki standart port numaraları (:80, :443) REGEX ile temizlenir ve clean URL biçimi sağlanır.

Konfigürasyon:

  • Execution Level: On Response
  • Header to Replace: Location
  • Regex to Match: (https?://[^/:]+):\d+(/.*)?
  • Match Type: Replace whole header
  • Replacement Content: \1\2
  • Conditions:

Sonuç:

  • ✅ URL temizliği → Standart portlar (:80, :443) otomatik kaldırılır.
  • ✅ Analytics doğruluğu → Aynı sayfa farklı URL olarak loglanmaz.
  • ✅ Tarayıcı uyumluluğu → Bazı eski tarayıcılarda port sorunları ortadan kalkar.
  • ✅ İki capture group → \1 protocol+domain, \2 path kısmını korur.

Örnek Dönüşüm:

  • Kurum Servisi: Location: https://example.com:443/dashboard?user=123
  • TR7 değiştirme: Location: https://example.com/dashboard?user=123

Senaryo 5: Host Başlık Subdomain Dönüşümü ​

Problem: Kurum Servisi www.* subdomain'leri kabul etmiyor, sadece docs.* subdomain'lerini anlıyor. Ancak kullanıcılar www.tr7.com ile geliyorlar. İstek Kurum Servisine gönderildiğinde Host başlığı www olduğundan 404 dönüyor.

Çözüm: Host başlığındaki www. prefix'ini REGEX ile docs. olarak değiştirin ve Kurum Servisinin beklediği formata çevirin.

Konfigürasyon:

  • Execution Level: On Request
  • Header to Replace: Host
  • Regex to Match: www\.(.*)\.com
  • Match Type: Replace whole header
  • Replacement Content: docs.\1.com.tr
  • Conditions:

Sonuç:

  • ✅ Host transformation → www subdomain'i docs olarak dönüştürülür.
  • ✅ TLD değişimi → .com uzantısı .com.tr olarak değiştirilir.
  • ✅ Capture group → (.*) ile domain base kısmı korunur.
  • ✅ Koşullu uygulama → Sadece /docs/ path'leri için aktif olur, diğer trafiğe müdahale etmez.

Örnek Dönüşüm:

  • İstemci isteği: Host: www.tr7.com
  • TR7 değiştirme: Host: docs.tr7.com.tr
  • Kurum Servisi bunu kabul eder ve doğru içeriği döner