Add HTTP Header
Add HTTP Header Aksiyonu Nedir?
Add HTTP Header aksiyonu, HTTP trafiğine yeni bir başlık (header) eklemek için kullanılır. Eklenen başlık, istek veya yanıt trafiğine dahil edilerek Kurum Servislerine veya istemcilere iletilir.
Bu aksiyon hem istek (request) hem de yanıt (response) aşamasında çalışabilir. Execution Level seçimine göre başlık, Kurum Servisine gönderilmeden önce isteğe veya istemciye döndürülmeden önce yanıta eklenir.
WARNING
Eğer eklenecek başlık zaten mevcutsa, bu aksiyon başlığı değiştirmez. Aynı isimde ikinci bir başlık eklenir. Mevcut başlığı değiştirmek için Set HTTP Header aksiyonu kullanılır.
Add HTTP Header Aksiyonunun Önemi
HTTP başlıkları, istemci ve sunucu arasındaki iletişimde kritik meta bilgiler taşır. Başlık ekleme aksiyonu, bu iletişimi zenginleştirmek ve özelleştirmek için güçlü bir araçtır.
Add HTTP Header aksiyonu;
- Kurum Servislerine ek bilgi iletilmesini sağlar (istemci IP'si, oturum bilgisi vb.),
- İstemcilere özel yanıt başlıkları gönderilmesini mümkün kılar,
- Uygulama katmanında izleme ve debugging için etiketleme yapar,
- Önbellek kontrol başlıkları eklenmesini sağlar,
- CORS ve güvenlik başlıkları eklenmesini mümkün kılar,
- Smart Variables ile dinamik içerik oluşturulmasını destekler.
Bu nedenle Add HTTP Header aksiyonu, trafik manipülasyonunun temel yapı taşlarından biridir.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Add HTTP Header Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Add HTTP Header seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
- Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
Addbutonuna tıklanarak aksiyon eklenir.
Add HTTP Header Aksiyonu Ekleme Formu
Add HTTP Header Aksiyonu Ekleme Formu
INFO
Execution Level
Aksiyonun hangi aşamada çalıştırılacağını belirler.
Bu alan kayıttan sonra değiştirilemez; yön değişikliği gerekiyorsa yeni bir aksiyon tanımlanır. Seçim yapılmazsa aksiyon istek aşamasında çalışır.
- 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.
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 Add
Eklenecek HTTP başlığının adı (key) bu alana girilir.
Alan yazılırken TR7, yaygın başlık adlarını otomatik tamamlama olarak önerir; öneri listesi seçili Execution Level'a (istek/yanıt) göre değişir. Özel (custom) başlık adları da girilebilir.
Başlık adları büyük/küçük harf duyarsızdır ancak standart format kullanılması önerilir (örn: X-Custom-Header).
TIP
Örnek başlık adları:
X-Forwarded-For: İstemci IP bilgisiX-Request-ID: İstek tanımlayıcısıX-Real-IP: Gerçek istemci IP'siCache-Control: Önbellek kontrolü
INFO
Header Content
Eklenecek başlığın içeriği (value) bu alana girilir.
fx ile sunulan akıllı değişken havuzu, seçili Execution Level'a göre değişir: On Response seçildiğinde yanıt aşaması değişkenleri (ör. %STATUS, %RESHEADER) listelenir; istek aşamasına özgü bazı değişkenler bu durumda sunulmaz.
TIP
Bu alan Smart Variables destekler. Değişken satırına (veya fx butonuna) tıklandığında Değişken ekle / Değişken düzenle penceresi açılır. Bu pencerede Değişken adı aranabilir listeden seçilir, değişken argüman alıyorsa (başlık adı, çerez adı vb.) ilgili alan doldurulur, gerekiyorsa Fonksiyondan geçir ile akıllı fonksiyon zinciri tanımlanır; Özet alanında oluşan ifadenin önizlemesi görülür ve Gönder ile alana yazılır.
Detaylı bilgi Variables sayfasında yer alır.
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 Eklendi
Operasyonel ve Güvenli Kullanım Önerileri
Add Header vs Set Header farkı:
| Aksiyon | Davranış |
|---|---|
| Add Header | Başlık zaten varsa bile yeni başlık ekler (çoklu başlık oluşur) |
| Set HTTP Header | Başlık varsa değerini değiştirir, yoksa yeni ekler |
Mevcut bir başlığın güncellenmesi gerekiyorsa Set HTTP Header aksiyonu tercih edilir.
- X- Öneki Kullanın. Özel başlıklar için
X-öneki kullanmak, standart HTTP başlıklarıyla çakışmayı önler. Örneğin:X-Custom-ID,X-Trace-ID. - Hassas Bilgileri Dikkatli Ekleyin. Başlık içeriklerinde hassas bilgiler (API anahtarları, şifreler vb.) bulunmamalıdır. Bu bilgiler network trafiğinde görünür olacaktır.
- Koşullarla birlikte kullanılır. Tüm trafiğe başlık eklemek yerine belirli path'lere ya da kullanıcı gruplarına hedefli başlıklar eklenir.
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: İstemci IP Bilgisini Kurum Servisine İletme
Problem: Reverse proxy arkasındaki Kurum Servisleri, gerçek istemci IP adresini göremez ve tüm isteklerin TR7 IP'sinden geldiğini sanır. Bu durum log analizi, güvenlik ve kullanıcı takibini imkansız hale getirir.
Çözüm: Gerçek istemci IP adresini X-Forwarded-For başlığı ile Kurum Servisine iletin.
Konfigürasyon:
- Execution Level: On Request
- Header to Add:
X-Forwarded-For - Header Content: Smart Variables (fx) butonundan Client IP address (%SRCIP) değişkeni seçilir. (Not: vService'in kendi Add X-Forwarded-For Header seçeneği açıksa bu aksiyonla birlikte çift XFF başlığı oluşur: ikisinden biri kullanılmalıdır.)
- Conditions: Koşulsuz (tüm isteklere uygulanır)
Sonuç:
- ✅ Tüm istekler → X-Forwarded-For başlığı ile istemci IP'si Kurum Servisine iletilir.
- ✅ Kurum Servisi log'ları → Gerçek istemci IP adreslerini kaydeder.
Senaryo 2: Microservices için Request Tracing
Problem: Mikroservis mimarisinde bir isteğin farklı servisler arasında nasıl aktığını takip etmek zor ve hata ayıklama karmaşık hale geliyor.
Çözüm: Her isteğe benzersiz bir X-Request-ID başlığı eklenerek distributed tracing etkinleştirilir.
Konfigürasyon:
- Execution Level: On Request
- Header to Add:
X-Request-ID - Header Content: Smart Variables (fx) butonundan benzersiz ID değişkeni seçilir (örn: timestamp veya unique identifier)
- Conditions: Path STARTS WITH
/api/
Sonuç:
- ✅ /api/ ile başlayan istekler → Benzersiz X-Request-ID başlığı eklenir.
- ✅ Mikroservisler arası takip → Log'larda aynı Request-ID ile eşleştirilir.
- ❌ /api/ dışındaki istekler → X-Request-ID başlığı eklenmez.
Senaryo 3: CORS Başlığı Ekleme
Problem: Frontend uygulaması farklı bir domain'de çalışıyor (örn: app.example.com) ve API'ye (api.example.com) AJAX istekleri yapıyor. Browser CORS hatası veriyor.
Çözüm: API yanıtlarına Access-Control-Allow-Origin başlığı eklenerek cross-origin isteklere izin verilir.
Konfigürasyon:
- Execution Level: On Response
- Header to Add:
Access-Control-Allow-Origin - Header Content:
https://app.example.com - Conditions: Path STARTS WITH
/api/
Sonuç:
- ✅ /api/ isteklerine dönen yanıtlar → Access-Control-Allow-Origin başlığı eklenir.
- ✅ Browser → CORS hatası vermez, AJAX istekleri başarılı olur.
- ❌ /api/ dışındaki yanıtlar → CORS başlığı eklenmez.
Senaryo 4: Cache Control Header Ekleme
Problem: Statik dosyalar (CSS, JS, images) her istekte Kurum Servisinden çekiliyor ve bandwidth tüketimi yüksek. Browser cache kullanılmıyor.
Çözüm: Statik dosyalara Cache-Control başlığı ekleyerek browser'ın bu dosyaları 7 gün boyunca cache'lemesini sağlayın.
Konfigürasyon:
- Execution Level: On Response
- Header to Add:
Cache-Control - Header Content:
public, max-age=604800 - Conditions:
Sonuç:
- ✅ .css, .js, .png dosyaları → Cache-Control: public, max-age=604800 başlığı eklenir.
- ✅ Browser → 7 gün boyunca bu dosyaları cache'ler, bandwidth tasarrufu sağlanır.
- ❌ Diğer dosyalar → Cache-Control başlığı eklenmez.
Senaryo 5: HSTS Security Header Ekleme
Problem: Kullanıcılar bazen HTTP protokolü ile siteye erişmeye çalışıyor ve HTTPS'e yönlendirilmiyor. Bu durum man-in-the-middle saldırılarına açık hale getiriyor.
Çözüm: Tüm HTTPS yanıtlarına Strict-Transport-Security başlığı ekleyerek browser'ı sadece HTTPS kullanmaya zorlayın.
Konfigürasyon:
- Execution Level: On Response
- Header to Add:
Strict-Transport-Security - Header Content:
max-age=31536000; includeSubDomains; preload - Conditions: Koşulsuz (tüm HTTPS yanıtlarına uygulanır)
Sonuç:
- ✅ Tüm HTTPS yanıtları → Strict-Transport-Security başlığı eklenir.
- ✅ Browser → 1 yıl boyunca sadece HTTPS kullanır, HTTP isteklerini otomatik HTTPS'e çevirir.
- ✅ Man-in-the-middle saldırıları → HSTS sayesinde engellenmiş olur.
