Skip to content
Smarter by Design.Simpler for Business

HTTP Response Body ​

HTTP Response Body Koşulu Nedir? ​

HTTP Response Body koşulu, Kurum Servisi sunucusundan gelen HTTP yanıtının gövde (body) içeriğini değerlendirerek trafik manipülasyon kararları almak için kullanılan bir koşul tipidir.

HTTP cevap gövdesi, sunucunun bir HTTP isteğine karşılık olarak istemciye gönderdiği asıl içeriğin bulunduğu bölümdür. Başlıklardan sonra, bir boş satırın ardından gelen içerik bölümüdür.

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 52
↓ HTTP Response Body
{"status":"success", "message":"User created"}

Bu koşul yalnızca yanıt (response) aşamasında değerlendirilebilir.

WARNING

HTTP Response Body koşulu yalnızca Response aşamasında çalışır. Kurum Servisi yanıt vermeden önce bu koşul değerlendirilemez.

HTTP Response Body Koşulunun Önemi ​

Kurum Servislerinin döndürdüğü içerik, uygulama durumu, hata mesajları ve kullanıcı verileri hakkında kritik bilgiler taşır.

HTTP Response Body koşulu sayesinde;

  • Backend hata mesajları tespit edilebilir,
  • API yanıt içeriklerine göre farklı işlemler uygulanabilir,
  • Hassas veri sızıntısı tespit edilebilir,
  • Belirli içeriklere göre cache stratejileri uygulanabilir,
  • Dinamik içerik manipülasyonu için koşullar tanımlanabilir.

HTTP Response Body vs HTTP Request Body

KriterHTTP Request BodyHTTP Response Body
Yönİstemci → SunucuSunucu → İstemci
İçerikForm, JSON, XMLHTML, JSON, Dosya
DeğerlendirmeRequest + Response aşamasıYalnız Response aşaması

Kullanılabildiği vService Tipleri ​

HTTP
L7 TCP
Network

Koşul yalnızca yanıt (At Response) aşamasında kullanılabilir; yanıt gövdesi istek aşamasında henüz mevcut değildir.

Nasıl Eklenir? ​

Yeni bir HTTP Response Body Koşulu, 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 → Conditions → Add adımları takip edilir.
  3. Criteria olarak HTTP response body seçilir.
  4. Koşula ait ilgili konfigürasyonlar yapılandırılır.
  5. Add butonuna tıklanarak koşul eklenir.

HTTP Response Body Koşulu Ekleme Formu ​

HTTP Response Body Koşulu Ekleme FormuHTTP Response Body Koşulu Ekleme Formu

INFO

Condition Name ​

Oluşturulacak koşul için isteğe bağlı bir isim girilebilir.

Bu alan, özellikle aşağıdaki senaryolarda önemlidir:

  • Aynı vService altında çok sayıda koşul tanımlandığında,
  • Benzer kriterlere sahip koşulların ayırt edilmesi gerektiğinde,
  • Koşulun hangi iş kuralını temsil ettiğinin hızlıca anlaşılması istendiğinde.

Bu alan boş bırakıldığında, TR7 ilgili koşulun içeriğini analiz ederek Condition Description alanında otomatik ve açıklayıcı bir isim oluşturur. Oluşturulan bu açıklama, koşul listelerinde isim olarak kullanılır.

INFO

Criteria Zorunlu ​

Koşulun tipini belirleyen alandır; aranabilir açılır listeden HTTP response body seçilir. Bu seçim, formda görüntülenecek alanları belirler. Kriter, koşul kaydedildikten sonra değiştirilemez: farklı bir kritere ihtiyaç duyulursa yeni bir koşul tanımlanır. Listedeki tüm kriterler ve kapsamları için Conditions sayfasındaki kriter kataloğuna bakılabilir.

INFO

Content Matching Method Varsayılan: Exact match ​

İçeriğin nasıl eşleştirileceğini belirler. Alan, formda etiketsiz bir açılır liste olarak Criteria'nın hemen altında görünür ve Exact match seçili açılır. Bu kriterde Is present seçeneği sunulmaz.

SeçenekKodAçıklama
Exact matchexactMatchDeğer birebir eşleşmelidir.
StartstartDeğer belirtilen metinle başlamalıdır.
EndendDeğer belirtilen metinle bitmelidir.
IncludessubDeğer belirtilen metni içermelidir.
RegexregexDeğer düzenli ifadeyle eşleşmelidir.

Örnek Gövde Eşleştirmeleri:

YöntemQueryEşleşen Gövdeler
Includes"error"Hata içeren yanıtlar
Regex"status"\s*:\s*"fail"Başarısız API yanıtları
Includes<!DOCTYPE html>HTML sayfaları
Includesstack traceHata detayı sızan yanıtlar

INFO

Case Insensitive Varsayılan: Kapalı ​

Büyük/küçük harf duyarlılığını kontrol eder.

  • Aktif: example, EXAMPLE, Example aynı kabul edilir
  • Aktif Değil: Tam eşleşme gerekir (varsayılan)

TIP

URL path'leri ve header isimleri genellikle case-insensitive işlenmeli, değerler ise case-sensitive kalmalıdır.

INFO

Query Zorunlu ​

Eşleştirilecek olan değer bu alana girilir. Seçilen eşleştirme yöntemine göre:

  • Exact match: Değerin birebir karşılığını kontrol eder.
  • Start: Aranacak metin parçasının başlangıcını kontrol eder.
  • End: Aranacak metin parçasının bitişini kontrol eder.
  • Includes: Aranacak metin parçasının içinde geçme durumunu kontrol eder.
  • Regex: Düzenli ifade deseni (Regex) ile kontrol eder.

Örnek değerler:

  • "error":true: JSON hata yanıtları
  • Exception: Java stack trace
  • <title>Error</title>: HTML hata sayfaları
  • password: Şifre bilgisi sızıntısı

INFO

Body Size to Parse(Bytes) ​

HTTP yanıt gövdesinin kaç byte'ının kontrol edileceği belirlenir; gövdenin yalnızca bu alanda belirtilen ilk N baytı incelenir, sonrası hiç değerlendirilmez.

DeğerAçıklama
Minimum1 byte
Maksimum16384 bytes (16 KB)
Varsayılan1024 bytes (form açılış değeri; alan boş bırakılırsa sistem 4096 kullanır)

TIP

Performans için mümkün olan en düşük değer kullanılmalıdır; aranan desen genellikle gövdenin başındadır.

Yanıt Geciktirme

Yanıt gövdesinin incelenebilmesi için TR7, yanıtı istemciye iletmeden önce hedef bayt sayısı toplanana kadar bekletir; bekleme üst sınırı 500 ms'dir ve değiştirilemez. Süre dolduğunda yanıt kesilmez: koşul, o ana kadar toplanan kısmi gövde üzerinde değerlendirilir; aranan içerik henüz gelmemişse koşul sessizce eşleşmez. Content-Length bildirmeyen (chunked) yanıtlarda bekleme olasılığı daha yüksektir. Bu gecikme maliyeti vService genelinde oluşur: birden fazla gövde koşulu varsa hedef, koşullar arasındaki en büyük Body size değeridir.

INFO

Condition Description ​

Girilen kriter ve değerler doğrultusunda TR7 tarafından otomatik olarak oluşturulur.

Bu açıklama;

  • Koşulun hangi değer için geçerli olduğunu,
  • Hangi kriter üzerinden çalıştığını,
  • Listeleme ekranlarında koşulun hızlıca anlaşılmasını

sağlayacak şekilde sistem tarafından dinamik olarak üretilir.

INFO

Form Butonları ​

Add ​

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

Add & Repeat ​

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

Koşul EklendiKoşul Eklendi

Operasyonel Kullanım Önerileri ​

  • Hata Tespiti için Kullanın. Backend hatalarını tespit edip özel hata sayfaları göstermek için bu koşulu kullanın.
  • Veri Sızıntısı Kontrolü. Stack trace, şifre veya hassas veri sızan yanıtları tespit edip engelleyin.
  • Response Aşamasında Kullanın. Bu koşul yalnızca response aşamasında çalışır. Request aşamasında kullanılamaz.
  • Sıkıştırılmış İçeriğe Dikkat. Sıkıştırılmış yanıtlarda metin deseni eşleşmesi güvenilir değildir ve TR7 bu koşul için sıkıştırmayı otomatik olarak devre dışı bırakmaz; koşulun kullanıldığı vService'te sıkıştırma profilinin kapalı olduğundan emin olunmalıdır.

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

Aşağıdaki örnekler, ilgili koşulun 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: Stack Trace Sızıntısı Engelleme (Production Ortamı) ​

Kullanım Amacı: Kurum Servisi yanıtlarında stack trace, exception detayları gibi debug bilgilerinin production ortamında kullanıcılara görünmesini engellemek ve güvenlik açığını kapatmak.

Konfigürasyon: Content Matching Method → Regex · Case insensitive → işaretli · Query → (Exception|stack trace|at .+\(.+\.(java|py|php):[0-9]+\)|Traceback) · Body size to parse → 8192

Aksiyon Önerileri:

  • ✅ Show Content → Stack trace içeren yanıt engellenir, kullanıcıya genel "500 Internal Server Error" sayfası gösterilir.
  • ✅ Delete HTTP Header → X-Debug, X-Error-Detail gibi hassas debug header'ları yanıttan kaldırılır.

Senaryo 2: Hassas Veri Sızıntısı Tespiti ve Engelleme ​

Kullanım Amacı: Kurum Servisi yanıtlarında şifre, API key, token gibi hassas verilerin yanlışlıkla kullanıcılara sızmasını tespit edip engellemek.

Konfigürasyon: Content Matching Method → Regex · Case insensitive → işaretli · Query → (password|secret|api_key|private_key|token|credential) · Body size to parse → 8192

Aksiyon Önerileri:

  • ✅ Show Content → Hassas veri içeren yanıt engellenir, "Sensitive data removed" redacted yanıtı gösterilir.
  • ✅ Add HTTP Header → X-Security-Alert: data-leak header'ı eklenir, güvenlik olayı işaretlenir.

Senaryo 3: SQL Hata Mesajı Maskeleme ​

Kullanım Amacı: Kurum Servisi yanıtlarında database hata mesajlarını (MySQL, PostgreSQL, Oracle) gizleyerek veritabanı yapısı hakkında bilgi sızıntısını önlemek.

Konfigürasyon: Content Matching Method → Regex · Case insensitive → işaretli · Query → (SQL syntax|mysql_|pg_|ORA-[0-9]+|SQLite) · Body size to parse → 4096

Aksiyon Önerileri:

  • ✅ Show Content → SQL hata mesajı gizlenir, kullanıcıya genel "Database error occurred" mesajı gösterilir.