Skip to content
Smarter by Design.Simpler for Business

HTTP Header ​

HTTP Header Koşulu Nedir? ​

HTTP Header koşulu, HTTP isteğinin veya yanıtının başlık (header) bilgilerini değerlendirerek trafik yönlendirme ve manipülasyon kararları almak için kullanılan bir koşul tipidir.

HTTP başlığı, istemci (tarayıcı, mobil uygulama vb.) ile sunucu arasında yapılan HTTP istekleri (request) ve yanıtları (response) sırasında taşınan ek meta bilgileridir. HTTP başlıkları verinin kendisi değil, verinin nasıl gönderileceğini, nasıl işleneceğini ve nasıl yorumlanacağını anlatır.

HTTP başlıkları, istek ve yanıt meta verilerini taşır.

Örnek İstek (Request) HTTP Başlıkları

http
GET /api/users HTTP/1.1
Host: www.tr7.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer token123

Örnek Cevap (Response) HTTP Başlıkları

http
Content-Type: application/json
Content-Length: 348
Cache-Control: max-age=3600
Server: Apache/2.4.59 (Debian)
Set-Cookie: sessionid=abc123

Bu koşul, hem istek (request) hem de yanıt (response) başlıklarını kontrol edebilir.

HTTP Header Koşulunun Önemi ​

HTTP başlıkları, istemci bilgileri, kimlik doğrulama, içerik türü ve önbellek direktifleri gibi kritik bilgiler taşır.

HTTP Header koşulu sayesinde;

  • Host başlığına göre virtual hosting yapılabilir,
  • User-Agent ile tarayıcı/cihaz tespiti yapılabilir,
  • Authorization başlığı ile kimlik doğrulama kontrolleri yapılabilir,
  • Custom header'larla özel routing senaryoları uygulanabilir,
  • Content-Type'a göre farklı işlemler yapılabilir.

Bu yönüyle HTTP Header koşulu, en esnek ve güçlü koşul tiplerinden biridir.

Kullanılabildiği vService Tipleri ​

HTTP
L7 TCP
Network

Nasıl Eklenir? ​

Yeni bir HTTP Header 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 header seçilir.
  4. Koşula ait ilgili konfigürasyonlar yapılandırılır.
  5. Add butonuna tıklanarak koşul eklenir.

HTTP Header Koşulu Ekleme Formu ​

HTTP Header Koşulu Ekleme FormuHTTP Header 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 header 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.

SeçenekAçıklama
Exact matchDeğer birebir eşleşmelidir.
StartDeğer belirtilen metinle başlamalıdır.
EndDeğer belirtilen metinle bitmelidir.
IncludesDeğer belirtilen metni içermelidir.
RegexDeğer düzenli ifadeyle eşleşmelidir.
Is presentYalnızca varlık kontrolü sağlanır. (değer önemli değil)

TIP

Is present seçildiğinde, başlığın yalnızca var olup olmadığı kontrol edilir; değeri önemli değildir. Bu seçimde Query ve Case Insensitive alanları gizlenir.

Örnek: Authorization başlığının varlığı kontrolü.

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 adları genellikle case-insensitive işlenmeli, değerler ise case-sensitive kalmalıdır.

TIP

HTTP/1.x'te header adları case-insensitive'dir (RFC 7230). Ancak değerler genellikle case-sensitive'dir.

INFO

Header Name Zorunlu ​

Kontrol edilecek HTTP başlığının adı bu alana girilir. Başlığın yönü, alanın solundaki seçiciden Request veya Response olarak belirlenir; form, Request seçili ve Host yazılı olarak açılır. Bu kriterde ayrı bir Condition level alanı yoktur: istek/yanıt ayrımı yalnızca bu seçicide yapılır.

Request ​

HTTP istek başlıkları için seçilir.

Yaygın istek başlıkları:

BaşlıkAçıklama
HostHedef domain
User-AgentTarayıcı/cihaz bilgisi
AuthorizationKimlik doğrulama
Content-Typeİstek içerik türü
AcceptKabul edilen içerik türleri
X-Forwarded-ForProxy arkası gerçek IP
CookieÇerez bilgileri
Response ​

HTTP yanıt başlıkları için seçilir.

Yaygın yanıt başlıkları:

BaşlıkAçıklama
Content-TypeYanıt içerik türü
Cache-ControlÖnbellek direktifleri
Set-CookieÇerez ayarlama
LocationYönlendirme hedefi

TIP

Header adı yazarken, TR7 yaygın başlık isimlerini otomatik tamamlama olarak önerir; öneri listesi, seçili yöne (Request/Response) göre değişir. Özel (custom) başlık isimleri de manuel olarak girilebilir.

WARNING

Response seçilen bir başlık koşulu yalnızca yanıt aşamasında değerlendirilen kural ve aksiyonlarda kullanılmalıdır; istek aşamasındaki bir kullanımda başlık değeri henüz oluşmadığından koşul hiçbir zaman eşleşmez.

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.

TIP

Is present seçildiğinde bu alan gizlenir.

Örnek değerler:

  • www.tr7.com: Host başlığı için
  • application/json: Content-Type için
  • ^Bearer\s+: Authorization regex

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 ​

  • Virtual Hosting için Host Başlığını Kullanın. Aynı IP üzerinde birden fazla domain için Host başlığına göre yönlendirme yapın.
  • X-Forwarded-For'u Güvenle Kullanın. Proxy/CDN arkasındaki gerçek IP için X-Forwarded-For kullanın, ancak spoofing riski olduğunu unutmayın.
  • Custom Header'lar için Standart Prefix Kullanın. Özel header'lar için X- prefix'i kullanın (örn. X-Custom-Header).
  • Response Header'ları Response Aşamasında Kullanın. Response header'ları yalnızca Kurum Servisi yanıt verdikten sonra oluşur; istek aşamasındaki bir kuralda kullanılan Response başlık koşulu hiçbir zaman eşleşmez.

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: Virtual Hosting ile Multi-Domain Yönetimi ​

Kullanım Amacı: Aynı IP adresi ve vService üzerinde birden fazla domain'e hizmet vermek ve Host başlığına göre farklı Kurum Servislerine yönlendirme yapmak.

Konfigürasyon:

  • Content Matching Method: Exact match
  • Case Insensitive: işaretli
  • Header Name: Request → Host
  • Query: www.tr7.com

İlgili: Conditional Backend Services ile Host'a göre farklı Kurum Servisine yönlendirme yapılır.

Senaryo 2: API Kimlik Doğrulama Kontrolü ​

Kullanım Amacı: API endpoint'lerine erişim için Authorization başlığının varlığını kontrol etmek ve yetkisiz erişimleri engellemek.

Konfigürasyon:

  • Content Matching Method: Is present
  • Header Name: Request → Authorization

Aksiyon Önerileri:

  • ✅ Block → Authorization başlığı olmayan istekler 401 Unauthorized ile engellenir (Path koşulu ile birlikte: /api/private/).
  • ✅ Show Content → "Authentication required" özel uyarı sayfası gösterilir.
  • ✅ Quarantine → Tekrarlayan yetkisiz erişim denemeleri (>10 deneme) 30 dakika boyunca karantinaya alınır.

Senaryo 3: Mobil Cihaz Tespiti ve Optimizasyon ​

Kullanım Amacı: User-Agent başlığından mobil cihazları tespit edip mobil optimize edilmiş içeriğe yönlendirmek ve mobil kullanıcı deneyimini iyileştirmek.

Konfigürasyon:

  • Content Matching Method: Includes
  • Case Insensitive: işaretli
  • Header Name: Request → User-Agent
  • Query: Mobile

Aksiyon Önerileri:

  • ✅ Set Path → Ana sayfa (/) istekleri mobil versiyona (/m/) yönlendirilir.
  • ✅ Add HTTP Header → X-Device-Type: mobile header'ı eklenir, Kurum Servisi mobil optimize yanıt verir.

Senaryo 4: JSON API İstek Validasyonu ​

Kullanım Amacı: API endpoint'lerine gelen isteklerin Content-Type başlığını kontrol ederek yalnızca JSON formatında istek kabul etmek ve hatalı istekleri engellemek.

Konfigürasyon:

  • Content Matching Method: Includes
  • Header Name: Request → Content-Type
  • Query: application/json

Aksiyon Önerileri:

  • ✅ Block → POST/PUT istekleri Content-Type application/json değilse 400 Bad Request ile engellenir (Path koşulu: /api/).
  • ✅ Add HTTP Header → X-Content-Validated: true header'ı eklenir, JSON validasyonu başarılı olduğu işaretlenir.

Kullanım Amacı: Referer başlığını kontrol ederek statik dosyaların (resim, video) başka sitelerden doğrudan linklenmesini (hotlink) engellemek ve bant genişliği hırsızlığını önlemek.

Konfigürasyon:

  • Content Matching Method: Includes
  • Header Name: Request → Referer
  • Query: tr7.com

Aksiyon Önerileri:

  • ✅ Block → Referer tr7.com içermiyorsa statik içerik istekleri 403 Forbidden ile engellenir (Path koşulu: /images/, /videos/).
  • ✅ Show Content → "Direct linking not allowed" uyarı sayfası gösterilir.

Senaryo 6: API Versiyon Yönlendirmesi ​

Kullanım Amacı: Custom X-API-Version başlığına göre farklı API versiyonlarına yönlendirme yapmak ve API versiyonlamasını yönetmek.

Konfigürasyon:

  • Content Matching Method: Exact match
  • Header Name: Request → X-API-Version
  • Query: v2

Aksiyon Önerileri:

  • ✅ Set Path → API path'ine versiyon prefix'i eklenir (/v2/endpoint), Kurum Servisi doğru versiyonu işler.
  • ✅ Add HTTP Header → Eski versiyon (v1) için X-API-Deprecated: true header'ı eklenir, kullanım dışı uyarısı verilir.