İsteğe veya yanıta HTTP Header ekleyebilir, silebilir, değiştirebilir miyim?
Kısa cevap
Evet, HTTP vService'te dört aksiyonla: Add HTTP Header yeni başlık ekler, Set HTTP Header başlığın değerini değiştirir (yoksa ekler), Delete HTTP Header başlığı siler, Replace HTTP Header Content değeri regex ile değiştirir. İsteğe uygulanacaksa Execution Level On Request (varsayılan), yanıta uygulanacaksa On Response seçilir; Execution Level kayıttan sonra değiştirilemez. Header Content alanında Smart Variable kullanılabilir. Aksiyon vService'in Actions alanına eklenince çalışır.
Sorun: Uygulamaya Dokunmadan Başlık Değiştirmek Gerekiyor
İzleme için istek kimliği eklemek, Kurum Servisine ek bilgi iletmek, yanıttaki bir başlığı düzeltmek ya da gereksiz bir başlığı kaldırmak gerekebilir. Bu değişiklikler uygulama koduna dokunmadan, istek ve yanıt TR7'den geçerken yapılır.
Özel Amaçlı Aksiyonlar
Bazı başlık işleri için hazır aksiyonlar vardır: güvenlik başlıkları için Manage HTTP Security Headers (Güvenlik header'larını (CSP, HSTS, X-Frame-Options) backend'e dokunmadan ekleyebilir miyim?), çerez öznitelikleri için HTTP Cookie Security (Cookie'lere Secure, HttpOnly, SameSite özelliklerini otomatik ekleyebilir miyim?), istemci IP'si için vService'teki X-Forwarded-For anahtarı (X-Forwarded-For nasıl etkinleştirilir; backend tarafında (Apache / Nginx / IIS logları) ne yapmam gerekir?).
Çözüm: Beş Yöntem
Dört aksiyonun formu aynı akışla doldurulur; değişen başlık işlemidir. Aynı vService'te birden çok başlık aksiyonu kullanılabilir; aksiyonlar Actions listesindeki sırayla işlenir.
| Durumunuz | Uygun yöntem |
|---|---|
| Yeni başlık eklemek | Yöntem 1: Add HTTP Header |
| Başlığın değerini belirlemek (yoksa eklemek), tek kopya bırakmak | Yöntem 2: Set HTTP Header |
| Başlığı kaldırmak | Yöntem 3: Delete HTTP Header |
| Değerin yalnızca bir kısmını değiştirmek | Yöntem 4: Replace HTTP Header Content |
| Komut satırından | Yöntem 5: WEB-CLI |
Yöntem 1: Add HTTP Header Önerilen
- Nasıl çalışır Başlık isteğe ya da yanıta eklenir; aynı adlı başlık zaten varsa ikinci bir kopya oluşur.
- Nerede açılırLoad Balancer → Actions → Add HTTP Header
- Gereksinim Koşul kullanılacaksa önce Conditions'ta oluşturulur
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions → Add tıklanır (nasıl eklenir).
Action Name girilir, Action Type = Add HTTP Header seçilir.
- Execution Level: Kurum Servisine giden isteğe eklemek için On Request (varsayılan), istemciye dönen yanıta eklemek için On Response. Bu alan kayıttan sonra değiştirilemez.
- Header to Add:
X-Request-Source. - Header Content:
TR7; fx ile Smart Variable eklenebilir (ör. istemci IP'si, istek yolu). - Conditions isteğe bağlıdır; boş bırakılırsa bütün isteklere uygulanır.
Add tıklanır.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit tıklanır.
Save tıklanır. Değişiklik açık bağlantılar kopmadan uygulanır; cluster'da varsayılan auto-sync ile eş cihaza da gönderilir (Manual Sync Mode açıksa Synchronize ile).
Doğrulama
vService'te Debug açılır; Debug Mode Logs kaydının Request sekmesindeki başlık listesinde eklenen başlık görünür.
X-Request-Source: TR7 · yeşil satır, artı işaretiUygulama ya da erişim logu gelen istek başlıklarını yazdırıyorsa başlık orada görülür.
X-Request-Source: TR7Yöntem 2: Set HTTP Header
- Nasıl çalışır Aynı adlı bütün başlıklar silinir ve tek bir başlık istenen değerle yazılır; başlık yoksa eklenir.
- Nerede açılırLoad Balancer → Actions → Set HTTP Header
- Gereksinim Yok
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions → Add tıklanır.
Action Type = Set HTTP Header seçilir.
Execution Level seçilir; Header to Edit = Cache-Control, Header Content = no-store (On Response).
Add tıklanır.
vService Edit ile açılır.
Details → Actions alanında aksiyon seçilir.
Save tıklanır.
Doğrulama
curl -sI https://www.example.com/ ve Debug Mode Logs kaydının Response sekmesi
Tek Cache-Control: no-store · değişen başlık koyu turuncu satır, sağ ok işaretiYöntem 3: Delete HTTP Header
- Nasıl çalışır Adı eşleşen başlığın bütün tekrarları silinir; başlık adında büyük/küçük harf farkı gözetilmez.
- Nerede açılırLoad Balancer → Actions → Delete HTTP Header
- Gereksinim Her başlık için ayrı aksiyon
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions → Add tıklanır.
Action Type = Delete HTTP Header seçilir.
Execution Level = On Response (yanıttan silmek için); Header to Delete = X-Powered-By.
Add tıklanır.
vService Edit ile açılır.
Details → Actions alanında aksiyon seçilir.
Save tıklanır.
Doğrulama
Debug Mode Logs kaydının Response sekmesindeki başlık listesi; istemcide curl -sI.
X-Powered-By kırmızı satır, çöp kutusu işareti · curl çıktısında yokYöntem 4: Replace HTTP Header Content
- Nasıl çalışır Kalıp başlık değerinde eşleşirse değerin tamamı Replacement content ile yeniden yazılır; korunacak bölümler grupla yakalanıp
\1ile geri konur. Match Type ile değerin tamamı ya da virgülle ayrılmış her parçası ayrı ayrı işlenir. - Nerede açılırLoad Balancer → Actions → Replace HTTP Header Content
- Gereksinim Kalıp büyük/küçük harfe duyarlıdır
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Actions → Add tıklanır.
Action Type = Replace HTTP Header Content seçilir.
Execution Level = On Response; Header to Replace = Location; Regex to Match = ^http://(.*)$; Match Type = Replace whole header (varsayılan); Replacement Content = https://\1. Kalıplar ve örnek sonuçlar: Header değerini regex ile değiştirebilir miyim?
Add tıklanır.
vService Edit ile açılır.
Details → Actions alanında aksiyon seçilir.
Save tıklanır.
Doğrulama
Kurum Servisinin yönlendirme döndürdüğü bir istek gönderilir; Debug Mode Logs kaydının Response sekmesine bakılır.
Location koyu turuncu satır, sağ ok işareti: eski http://… soluk kırmızı → yeni https://… yeşilYöntem 5: WEB-CLI
- Nasıl çalışır Add HTTP Header aksiyonu WEB-CLI komutuyla oluşturulup vService'e eklenir.
- Nerede açılır TR7 WEB-CLI →
lb action·lb service - Gereksinim WEB-CLI erişimi; Delete HTTP Header aksiyonu arayüzden oluşturulur
- vService tipi HTTP
Adım adım yapılandırma
--ruleLoc yazılmazsa aksiyon isteğe (atRequest) uygulanır:
lb action add type add_header name kaynak-ekle headerNameToAdd X-Request-Source headerContent TR7Yanıta eklemek için komutun sonuna --ruleLoc atResponse yazılır.
lb service show <vService>Çıktıdaki rules.0, rules.1 … satırları vService'teki aksiyonları sırasıyla gösterir. --rules.N o sıradaki aksiyonun yerine geçer; yeni aksiyon ilk boş sıraya yazılır.
vService'te iki aksiyon (0 ve 1) varsa yeni aksiyon 2. sıraya yazılır; hiç aksiyon yoksa --rules.0 kullanılır:
lb service update id <vService> --rules.2 kaynak-ekleDoğrulama
Debug Mode Logs kaydının Request sekmesi
X-Request-Source: TR7 · yeşil satırSık Yapılan Hatalar
- Yanıt başlığı için Execution Level'ı On Request bırakmak. Varsayılan On Request'tir ve kayıttan sonra değiştirilemez; yanıta uygulanacak aksiyon On Response ile yeniden oluşturulur (On Request ve On Response action'ları arasındaki fark nedir?).
- Add ile Set'i karıştırmak. Add mevcut başlığın yanına ikinci bir kopya ekler; tek değer isteniyorsa Set kullanılır.
- TR7'nin kendi ürettiği yanıtlarda başlık beklemek. On Response başlık aksiyonları Kurum Servisinden dönen yanıtlara uygulanır; TR7'nin ürettiği engelleme, yönlendirme, Show content ve hata yanıtlarını etkilemez.
- Protokol başlıklarını silmek ya da ezmek. Content-Length, Transfer-Encoding ve Host gibi başlıklara dokunmak bağlantıları bozabilir.
- Başlık adının yazıldığı biçimde gideceğini sanmak. HTTP/1.1'de başlık adları küçük harfe çevrilerek iletilir; Kurum Servisi büyük/küçük harfe duyarlıysa: Backend'im header adlarının büyük/küçük harf yazımına duyarlı; TR7 bunları değiştiriyor mu (Keep Header Names / HTTP 1.0 Header Compatibility)?
Dokümantasyonda nasıl yapılır
