Yanıt gövdesini değiştirebilir miyim (ör. HTML'e script eklemek, TC kimlik / kart numarası maskelemek)?
Kısa cevap
Evet, HTTP vService'te Modify Response Content aksiyonuyla. Modify Type = Mask, yanıttaki TC kimlik ya da kart numarası gibi değerleri maskeler (Built-in Mask Regexes ile hazır desenler seçilebilir); Add HTML Code, seçilen HTML Tag'e (html, head, body, title) kod ekler; Replace, bulunan metni New Content ile değiştirir. Aksiyon yalnızca Kurum Servisinden dönen yanıtlara uygulanır ve içerik türüne bakmaz; bu yüzden yanıtın Content-Type'ına bakan bir HTTP Header (Response) koşuluyla kullanılır. Aksiyonun bulunduğu vService'te Kurum Servisinden sıkıştırılmamış yanıt istenir ve yanıt sıkıştırması devre dışı kalır.
Sorun: Yanıtta Değiştirilmesi Gereken İçerik Var
Uygulama yanıtlarında kişisel veriler açıkça görünebilir, bütün sayfalara bir analiz ya da izleme kodu eklenmesi gerekebilir ya da eski bağlantıların düzeltilmesi istenebilir. Uygulama değiştirilemediğinde bu düzenlemeler yanıt TR7'den geçerken yapılır.
Çözüm: Üç Yöntem
Üç yöntem aynı aksiyonun üç Modify Type seçeneğidir; aynı vService'e birden fazla Modify Response Content eklenebilir, aksiyonlar sırayla zincirlenir. Hepsinde ortak ön koşul, yalnızca HTML yanıtlarını seçen koşuldur:
| Ortak koşul | Değer |
|---|---|
| Criteria | HTTP Header |
| Header Name | Response grubundan Content-Type |
| Eşleştirme | Includes, değer text/html |
Bu koşul olmadan JSON, JavaScript ve ikili (görsel, PDF) yanıtlar da işlenir; ikili dosyada eşleşen bayt dizileri değişip dosya bozulabilir.
| Durumunuz | Uygun yöntem |
|---|---|
| Kişisel verileri maskelemek | Yöntem 1: Mask |
| Sayfalara script ya da HTML eklemek | Yöntem 2: Add HTML Code |
| Bir metni başka metinle değiştirmek | Yöntem 3: Replace |
Yöntem 1: Mask Önerilen
- Nasıl çalışır Desene uyan her değerin karakterleri maskeleme karakteriyle değiştirilir; metnin uzunluğu korunur. Baştan ve sondan tolerans kadar karakter, ayrıca Omitted characters'taki karakterler açık bırakılabilir.
- Nerede açılırLoad Balancer → Actions → Modify Response Content → Mask
- Gereksinim Content-Type koşulu
- vService tipi HTTP
Adım adım yapılandırma
Load Balancer → Conditions → Add tıklanır (nasıl eklenir).
Criteria = HTTP Header; Header Name = Response Content-Type; eşleştirme Includes, değer text/html.
Add tıklanır.
Load Balancer → Actions → Add tıklanır (nasıl eklenir).
Action Name girilir, Action Type = Modify response content, Modify Type = Mask seçilir. Built-in Mask Regexes satırında TC ID. NO ya da Credit card tıklanır; Query Type = RegEx (varsayılan) ile Mask Query dolar: TC ID. NO için \b\d{11}\b, Credit card için \b((\d{16})|((\d{4}-){3}\d{4})|((\d{4}\s){3}\d{4}))\b. Case Sensitive varsayılan kapalıdır (arama harf duyarsız).
- Masking Character: varsayılan
*. - Masking Tolerance: varsayılan 1; eşleşmenin başından ve sonundan bu kadar karakter açık kalır (eşleşme toleransın iki katından uzunsa).
- Min. Occurrences for Masking: varsayılan 1; maskeleme kaçıncı eşleşmeden başlasın.
- Omitted Characters: maskelenmeyecek karakterler; kart numarasındaki ayraçların görünmesi için
-ve boşluk yazılır.
Conditions alanında 2. adımdaki koşul seçilir.
Add tıklanır.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit tıklanır.
Save tıklanır. Cluster'da değişiklik varsayılan auto-sync ile eş cihaza da gönderilir (Manual Sync Mode açıksa Synchronize ile).
Hazır desenlerin örnek metinlerdeki sonucu (tolerans 1):
| Metin | Desen | Sonuç |
|---|---|---|
TCKN: 12345678901 | TC ID. NO | TCKN: 1*********1 |
Tel: 05551234567 | TC ID. NO | Tel: 0*********7 (11 haneli her sayı maskelenir) |
No: 123456789012 | TC ID. NO | Değişmez (12 hane) |
Kart: 4111111111111111 | Credit card | Kart: 4**************1 |
Kart: 4111-1111-1111-1111 | Credit card | Kart: 4*****************1; Omitted characters - ile Kart: 4***-****-****-***1 |
Kart: 4111 1111 1111 1111 | Credit card | Kart: 4*****************1 |
Kart: 4111-1111 1111-1111 | Credit card | Değişmez (karışık ayraç) |
IBAN TR12 0006 1005 1978 6457 8413 26 | Credit card | IBAN TR12 0*****************7 8413 26 (dört haneli dört grup kart sanılır) |
Min. Occurrences for Masking = 2 iken TC: 12345678901, Tel: 05551234567 metni TC: 12345678901, Tel: 0*********7 olur.
Doğrulama
curl -sk https://www.example.com/profil | grep -oE '[0-9*]{11}' ya da tarayıcıda sayfa kaynağı
1*********1curl -skI -H "Accept-Encoding: gzip" https://www.example.com/profil
Content-Encoding başlığı yokYöntem 2: Add HTML Code
- Nasıl çalışır HTML kodu seçilen etiketin açılışından hemen sonra (Append) ya da kapanışından hemen önce (Prepend) eklenir.
- Nerede açılırLoad Balancer → Actions → Modify Response Content → Add HTML Code
- Gereksinim Content-Type koşulu
- vService tipi HTTP
Adım adım yapılandırma
Koşul yoksa Yöntem 1'in 1–3. adımlarıyla oluşturulur.
Load Balancer → Actions → Add tıklanır.
Action Name girilir, Action Type = Modify Response Content, Modify Type = Add HTML Code seçilir. HTML Tag = body, Tag Modify Type = Prepend (kod </body>'den hemen önce eklenir). Script'ler için head + Prepend de kullanılabilir. Append seçildiğinde kod, adı seçilen etiketle başlayan her açılış etiketinin arkasına eklenir; head + Append, sayfadaki <header> öğelerine de kod ekler.
HTML Content to Add alanı, sayfadaki http:// bağlantılarını https://'e çeviren örnek bir script'le dolu gelir; eklenecek kod bununla değiştirilir.
Conditions alanında Content-Type koşulu seçilir.
Add tıklanır.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit tıklanır.
Details → Actions alanında aksiyon seçilir.
Save tıklanır.
Örnek sayfada konumların sonucu ([KOD] eklenen içerik):
| Seçim | Sonuç |
|---|---|
| body + Prepend | …<header class="ust">Menü</header>[KOD]</body> |
| head + Prepend | <head><title>x</title>[KOD]</head> |
| head + Append | <head>[KOD]<title>… ve <header class="ust">[KOD]Menü</header> |
Doğrulama
curl -sk https://www.example.com/ | grep -B1 '</body>' ya da tarayıcıda sayfa kaynağı
Eklenen kod </body> satırından hemen önceYöntem 3: Replace
- Nasıl çalışır Metin (String) ya da desen (RegEx) ile bulunan her içerik New content ile değiştirilir; metnin uzunluğu değişebilir.
- Nerede açılırLoad Balancer → Actions → Modify Response Content → Replace
- Gereksinim Content-Type koşulu
- vService tipi HTTP
Adım adım yapılandırma
Koşul yoksa Yöntem 1'in 1–3. adımlarıyla oluşturulur.
Load Balancer → Actions → Add tıklanır.
Action Name girilir, Action Type = Modify Response Content, Modify Type = Replace seçilir. Query Type = String, Mask Query = http://cdn.example.com/, New Content = https://cdn.example.com/. String araması harf duyarlıdır; RegEx seçilirse Case sensitive varsayılan kapalıdır. New content düz metin olarak eklenir; \1 gibi grup başvuruları çözülmez.
Conditions alanında Content-Type koşulu seçilir.
Add tıklanır.
Load Balancer → Load Balancer vService List ekranında HTTP vService seçilip Edit tıklanır.
Details → Actions alanında aksiyon seçilir.
Save tıklanır.
Doğrulama
curl -sk https://www.example.com/ | grep -c 'http://cdn.example.com/'
0Sık Yapılan Hatalar
Sıkıştırma bütün vService'te kapanır
Aksiyon vService'te bulundukça, koşuldan bağımsız olarak bütün isteklerde Kurum Servisinden sıkıştırılmamış yanıt istenir; vService'teki Compression profili de etkisiz kalır. Bant genişliği ve yanıt süresi artar; aksiyon yalnızca içerik değişikliği gereken vService'lerde kullanılır.
- Content-Type koşulu eklememek. Aksiyon içerik türüne bakmaz; koşul yoksa JSON, CSS ve ikili yanıtlar da işlenir.
- Hazır desenlerin yalnızca hedef veriyi yakalayacağını sanmak. TC ID. NO deseni 11 haneli her sayıyı (ör. telefon), Credit card deseni dört haneli dört grubu (ör. IBAN parçası) maskeler; sonuç örnek sayfalarda denenir.
- Replace'te grup başvurusu kullanmak. New content düz metindir;
\1yazıldığı gibi çıkar. - head + Append ile script eklemek. Kod
<header>öğelerine de eklenir;bodyya daheadile Prepend kullanılır. - Maskelemeyi tek koruma saymak. Maskeleme yanıtı istemciye giderken değiştirir; veri Kurum Servisinde açık kalır.
- Mixed content düzeltmesini burada aramak. HTTPS geçişindeki bağlantı sorunları için: HTTPS'e geçtikten sonra sayfalarda "mixed content" uyarısı çıkıyor; nasıl çözerim?
Dokümantasyonda nasıl yapılır
