Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-22.02

HTTP’den handler’a

Public GET’i edge, proxy, runtime ve handler boyunca takip ederek response’un sahibini ayır.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Origin handler

  1. Public read planı

    Client GET ve compact query planını hazırladı; edge veya runtime henüz bu request’i bilmiyor.

    Client
    GET planı hazır
    Edge policy/cache
    Request henüz yok
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  2. Edge request arrival

    Kavramsal request edge’e ulaştı; client prepared state ve diğer receiver’lar unchanged kalır.

    Client
    GET planı hazır
    Edge policy/cache
    Public GET alındı
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  3. Edge policy ve miss

    Selected maintenance=false ve cache miss sonrası edge upstream request’i hazırlar; bu vendor rule execution değildir.

    Client
    GET planı hazır
    Edge policy/cache
    Policy allow; origin request hazır
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  4. Proxy request arrival

    Edge upstream request’i balancer/proxy’ye ulaştı; runtime hâlâ request görmedi.

    Client
    GET planı hazır
    Edge policy/cache
    Policy allow; origin request hazır
    Balancer/proxy
    Proxy request received
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  5. Replica ve upstream

    Observed a=false,b=true listesi app-b seçer; proxy runtime request’ini ayrı relation olarak hazırlar.

    Client
    GET planı hazır
    Edge policy/cache
    Policy allow; origin request hazır
    Balancer/proxy
    app-b seçildi; runtime request hazır
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  6. Runtime request arrival

    Kavramsal proxy request’i runtime’a ulaştı; proxy seçimi application permission üretmez.

    Client
    GET planı hazır
    Edge policy/cache
    Policy allow; origin request hazır
    Balancer/proxy
    app-b seçildi; runtime request hazır
    Runtime/router
    GET target alındı
    Public note service
    Service çağrılmadı
  7. Middleware ve route

    Local public-purpose gate sonra fixed method/path match çalışır; middleware handoff için sahte packet çizilmez.

    Client
    GET planı hazır
    Edge policy/cache
    Policy allow; origin request hazır
    Balancer/proxy
    app-b seçildi; runtime request hazır
    Runtime/router
    Public gate geçti; tea route matched
    Public note service
    Service çağrılmadı
  8. Handler result hazır

    Local service Tea note bytes’ını hazırlar; bounded scene response’un client’e teslim edildiğini söylemez.

    Client
    GET planı hazır
    Edge policy/cache
    Policy allow; origin request hazır
    Balancer/proxy
    app-b seçildi; runtime request hazır
    Runtime/router
    Public gate geçti; tea route matched
    Public note service
    Tea note result hazır; client bekler

Public cache hit

  1. Public cache niyeti

    Önceden alınmış request public contract’ındadır; selected policy ve cache source ayrı değerlendirilir.

    Client
    Client yanıt bekler
    Edge policy/cache
    Public request alındı
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  2. Policy ve cache hit

    Selected policy allow ve supplied age2<lifetime5 uygun public hit verir; HTTP cache engine çalışmış sayılmaz.

    Client
    Client yanıt bekler
    Edge policy/cache
    Public cache hit; upstream zero
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  3. Cached response hazır

    Stored public JSON response hazırdır; origin ve service owner’ları hiç çağrılmadı.

    Client
    Client yanıt bekler
    Edge policy/cache
    Cached200 response hazır
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  4. Client cache arrival

    Kavramsal cached response client’e ulaştı; server-side handler’a uğramış gibi state eklenmez.

    Client
    Cached JSON received
    Edge policy/cache
    Cached200 response hazır
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  5. Public body okundu

    Client projection public JSON id/title alanlarını okur; bu native browser parse veya document render değildir.

    Client
    tea / Tea note public body known
    Edge policy/cache
    Cached200 response hazır
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı

Edge policy block

  1. Edge policy niyeti

    Edge request’i önceki boundary’de aldı; selected closure policy’si değerlendirilmek üzere supplied.

    Client
    Client yanıt bekler
    Edge policy/cache
    Public request alındı
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  2. Maintenance kapalı

    Supplied maintenanceClosed=true selected block kararını üretir; cache veya origin çağrısı yapılmaz.

    Client
    Client yanıt bekler
    Edge policy/cache
    Block kararı; upstream yok
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  3. Policy response hazır

    Edge403 response hazırdır; runtime owner’ı hâlâ request bilmez ve serviceCalls zero kalır.

    Client
    Client yanıt bekler
    Edge policy/cache
    403 policy response hazır
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı
  4. Client policy arrival

    Kavramsal policy response client’e ulaştı; edge aynı prepared state’i korur.

    Client
    403 edge-policy received
    Edge policy/cache
    403 policy response hazır
    Balancer/proxy
    Upstream henüz yok
    Runtime/router
    Runtime request yok
    Public note service
    Service çağrılmadı

Route bulunmadı

  1. Runtime route niyeti

    Missing-path request’i runtime’a önceki boundary’de ulaşmıştır. Public-purpose gate henüz karar vermedi; route match ve service çağrısı da henüz yapılmadı.

    Client
    Client yanıt bekler
    Edge policy/cache
    Edge yanıt bekler
    Balancer/proxy
    Proxy yanıt bekler
    Runtime/router
    Missing route request alındı
    Public note service
    Service çağrılmadı
  2. Public purpose geçti

    Selected public gate true’dur; bu principal authn veya private object authorization değildir.

    Client
    Client yanıt bekler
    Edge policy/cache
    Edge yanıt bekler
    Balancer/proxy
    Proxy yanıt bekler
    Runtime/router
    Public gate true; route beklenir
    Public note service
    Service çağrılmadı
  3. Route match bulunmadı

    Fixed allowlisted route tablosunda missing path yoktur; service read count0 ve router404 seçilir.

    Client
    Client yanıt bekler
    Edge policy/cache
    Edge yanıt bekler
    Balancer/proxy
    Proxy yanıt bekler
    Runtime/router
    Router404; service zero
    Public note service
    Service çağrılmadı
  4. Router response hazır

    Runtime404 response proxy için hazırlanır; generic object absence veya edge policy sonucu uydurulmaz.

    Client
    Client yanıt bekler
    Edge policy/cache
    Edge yanıt bekler
    Balancer/proxy
    Proxy yanıt bekler
    Runtime/router
    Router404 response hazır
    Public note service
    Service çağrılmadı
  5. Proxy404 arrival

    Kavramsal runtime response proxy’ye ulaştı; client ve edge bu bounded scene’de hâlâ bekler.

    Client
    Client yanıt bekler
    Edge policy/cache
    Edge yanıt bekler
    Balancer/proxy
    Runtime-router404 received
    Runtime/router
    Router404 response hazır
    Public note service
    Service çağrılmadı

ROLLER · STATE · VERİ AKIŞI

HTTP request her kutuda aynı knowledge değildir

WEB-22.01 sonunda hazırlanan GET /notes/tea?view=compact planını izleyelim. Bu public read body taşımaz; #details server target’a girmez. HTTP/1.1 request line ve Host ile okunabilir gösterim sunar; HTTP/2 ve HTTP/3 aynı semantics’i farklı frame ve field düzenleriyle taşır. Client planının hazır olması edge’in request’i aldığı anlamına gelmez. İlk receipt yalnız edge’in bilgisini değiştirir.

CDN uygun cache entry’den public representation döndürebilir veya origin miss için upstream request hazırlayabilir. WAF configured policy ile request inceleyen bir roldür; application’ın bütün business permissions’ını bilen evrensel owner değildir. Örnekte yalnız verilen maintenanceClosed predicate’i kullanılır. Edge önce bu policy’yi, sonra public cache kararını değerlendirir. Bu sıra örneğin kuralıdır; gerçek vendor rule set veya WAF execution sonucu değildir.

Load balancer eligible target seçer; reverse proxy client-facing connection arkasında başka upstream request/response ilişkisi kurabilir. Tek component iki rolü taşıyabilir. Burada a hazır olmadığından balancer/proxy app-b’ye yönlendirir. CDN, WAF, balancer ve proxy her site için dört ayrı physical appliance değildir. TLS termination edge’de olabilir, upstream security context ise ayrı policy ister. Bir hop’un başarısı sonraki connection veya handler’ın başarısını kanıtlamaz.

Runtime alınan request’i application kararına taşır

Node http.Server içindeki IncomingMessage method, url ve headers sunar; bunlar router veya permission policy kurmaz. Runtime request’i kendi parser/API sınırında temsil eder. Application router method/path’i operation’a bağlar; /notes/tea ile view=compact query ayrı alanlardır. Seçilen read route’una gelen context public note ID’si ve presentation seçeneği taşır. Upstream header’ın varlığı principal verification değildir.

Middleware sırası davranışı değiştirir. Middleware request/response’u değerlendirebilir, context ekleyebilir, cycle’ı bitirebilir veya sonraki handler’a control verebilir. Express bu modelin bir framework örneğidir; yerel fixture Express çalıştırmaz. Public-purpose predicate route’tan önce uygulanır; ardından belirlenmiş method/path match ve service read gelir. Middleware control transfer aynı process içindedir, ayrı HTTP packet değildir.

Origin dalı handler Tea note sonucunu hazırladığında biter; browser response delivery henüz gösterilmez. Cache-hit dalında origin call sayısı 0’dır ve public cache byte’ları client’a ulaştıktan sonra parse edilir. Maintenance closure edge’de 403, route miss runtime’da 404 üretir. Bunlar aynı failure owner’a ait değildir. Request, seçilen status, body representation ve tamamlanan recipient sınırı defterde ayrı izlenir.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

Cache ve closure

  1. Public GET planı

    Request GET /notes/tea?view=compact ve bodyBytes 0 taşıyor; fragmentSent false. H1Projection açıklama notation’ı, gerçek network capture değildir.

    Request/result ledger
    Public GET / no body / no fragment
    Policy ve execution gate
    Henüz değerlendirilmedi
    Owner sonucu
    Henüz değerlendirilmedi
  2. Cache fast path

    CacheHit policyAllowed/publicContract true ve supplied age 2 < lifetime 5. CallOrder policy/cache-hit ile sınırlı; originCalls ve serviceCalls 0.

    Request/result ledger
    Public GET / no body / no fragment
    Policy ve execution gate
    Cache hit / origin0 / service0
    Owner sonucu
    Henüz değerlendirilmedi
  3. 200’ü handler sayma

    Cached 200 source edge-cache’den geliyor. Handler veya database read eklemek bu fast path’e olmayan event yerleştirir; public cache private object permission kanıtı değildir.

    Request/result ledger
    Public GET / no body / no fragment
    Policy ve execution gate
    Cache hit / origin0 / service0
    Owner sonucu
    Cached200 / no handler evidence
  4. Maintenance gate

    Closed branch yalnız policy çağrısı yapar, status 403 ve forwarded false. Seçilen edge policy result’u application authz denial gibi etiketlenmiyor.

    Request/result ledger
    Policy closure /403 / service0
    Policy ve execution gate
    Cache hit / origin0 / service0
    Owner sonucu
    Cached200 / no handler evidence
  5. Ordering kapsamı

    Bu adapter policy’yi cache’den önce değerlendirir. Başka vendor’ların sırası bu örnekten çıkarılmaz; cache hit’in normal public contract’ı ayrı belirtilir.

    Request/result ledger
    Policy closure /403 / service0
    Policy ve execution gate
    Selected policy ordering / not universal
    Owner sonucu
    Cached200 / no handler evidence
  6. Yetki owner’ını koru

    Edge allow normal public purpose’u taşır, principal veya note-level grant oluşturmaz. Source field ile serviceCalls birlikte okunur; status tek başına yetki veya execution kanıtı değildir.

    Request/result ledger
    Policy closure /403 / service0
    Policy ve execution gate
    Selected policy ordering / not universal
    Owner sonucu
    Status + source + calls / authority separate

Route sınırı

  1. Ready app-b seçimi

    Normal miss’te app-a false ve app-b true; selected app-b. Replica selection’dan sonra public-purpose ve route-match değerlendirilir; receiver bilgisi önceki planla eşitlenmez.

    Request/result ledger
    app-b selected / route gate follows
    Policy ve execution gate
    Henüz değerlendirilmedi
    Owner sonucu
    Henüz değerlendirilmedi
  2. Service result hazırlığı

    Normal callOrder service-read ile biter, serviceCalls 1 ve JSON bodyBytes 31. Bu handler result prepared aşaması response’un client’a teslim edildiği anlamına gelmez.

    Request/result ledger
    app-b selected / route gate follows
    Policy ve execution gate
    Service1 / result prepared / client not shown
    Owner sonucu
    Henüz değerlendirilmedi
  3. Route miss başka branch

    Missing path runtime-router’da 404 verir ve serviceCalls 0. Bu route kararı object absence veya private permission hakkında bağımsız bir karar değildir.

    Request/result ledger
    app-b selected / route gate follows
    Policy ve execution gate
    Service1 / result prepared / client not shown
    Owner sonucu
    Route404 / no service read
  4. In-process hop sınırı

    Middleware, router ve service aynı adapter’da yerel işlem olabilir. Ayrı isimleri bulunması ayrı socket, TLS hop veya database packet çalıştırıldığı anlamına gelmiyor.

    Request/result ledger
    Local calls ≠ remote protocol hops
    Policy ve execution gate
    Service1 / result prepared / client not shown
    Owner sonucu
    Route404 / no service read
  5. Failure scope’u koru

    Edge403, cached200 ve route404 farklı result source’lara ait. Missing trace’e normal service-read eklemek, failure boundary’yi görünmez yapar.

    Request/result ledger
    Local calls ≠ remote protocol hops
    Policy ve execution gate
    Edge/cache/router owners distinct
    Owner sonucu
    Route404 / no service read
  6. Prepared result sınırı

    Bu örnek public read’dir; persistence commit veya client render yok. Gateway success’i write commit ya da TLS doğrulaması gibi başka mekanizmaların kanıtına çevirmiyoruz.

    Request/result ledger
    Local calls ≠ remote protocol hops
    Policy ve execution gate
    Edge/cache/router owners distinct
    Owner sonucu
    Public result only / commit and render separate

VARSAYIM · SINIR · KONTROL

Edge iznini object permission sanmak

Public request’in uygun upstream’e gitmesi, application object permission’ının doğrulandığı anlamına gelmez. Request amacı ve application operation için doğru policy owner karar vermelidir. WAF allow’u authenticated principal veya note-level authorization yerine koymak trust boundary’yi kaydırır. Bu örneğin başarılı representation’ları public’tir; private object erişimi edge cache ile doğrulanmaz. WEB-15 ve sonraki capstone’daki private policy application owner’da kalır.

Public cache fast path hangi operation’a ait olduğunu korumalıdır. Maintenance predicate normal hit’te bile ayrı değerlendirilir; upstream identity varsayımları endpoint’in güvenilen context’iyle sınırlanır. Bu ordering örnek policy’dir, bütün vendor’larda aynı execution order garantisi değildir. Yanlış cache classification yanlış representation kapsamına yol açabilir. Bu fixture private response paylaşmaz; gerçek site behavior’ı hakkında observation üretmez.

Handler’a ulaşmadan handler sonucu uydurmak

Cache hit’te service read sayısı 0’dır. Runtime log veya database read yapılmış gibi gösterilirse observation zincirine gerçekleşmemiş event eklenir. Maintenance closure edge’de durur; 403 sonucu application authorization denial ile aynı kanıt değildir. Route miss runtime’a ulaşır ama service çağırmaz. Debug ve review için status tek başına bu üç dalı ayırmaz.

Proxy’nin upstream request hazırlaması ile runtime’ın onu alması ayrı aşamalardır; hazırlanan state receipt’i önceden kanıtlamaz. Aynı process içindeki router/middleware çağrısı network hop sayılmaz. Failure kapsamı route match, policy closure ve cache source ile korunur. Böylece geçici error doğrudan compromise, her 404 object yokluğu veya gateway success persistence commit diye yorumlanmaz.

3. Blue · Güvenli geliştirme ve savunma

Hareket olmadan bütün senaryoları oku

Source controls

  1. Normal order kaydı

    Normal sıra policy, cache-miss, select app-b, public-purpose, route-match, service-read. Her local gate sırası aynı public request’e bağlanır.

    Call/result ledger
    Normal six-stage adapter order
    Execution comparison
    Henüz değerlendirilmedi
    Coverage sonucu
    Henüz değerlendirilmedi
  2. JSON bytes doğrulaması

    Result application/json body id tea ve title Tea note taşır; UTF-8 count 31. Decode ve byte length farklı checks; Content-Type parser başarısını otomatik vermez.

    Call/result ledger
    Normal six-stage adapter order
    Execution comparison
    id tea / title Tea note /31 byte
    Coverage sonucu
    Henüz değerlendirilmedi
  3. Zero call controls

    Cache-hit policy/cache-hit; closed yalnız policy; route-miss public-purpose/route-miss. Üçünde serviceCalls 0 kayıtlı, fakat source ve status birbirinden farklı.

    Call/result ledger
    Normal six-stage adapter order
    Execution comparison
    id tea / title Tea note /31 byte
    Coverage sonucu
    Recorded zero calls / distinct causes
  4. Recipient scope kaydı

    Origin result handler’da hazır; edge-cache başka owner’ın representation’ı. Client delivery, framework runtime veya real HTTP capture bu adapter call ledger’ına eklenmiyor.

    Call/result ledger
    Prepared handler result / client outside scope
    Execution comparison
    id tea / title Tea note /31 byte
    Coverage sonucu
    Recorded zero calls / distinct causes
  5. Selector contradiction

    Selector edge-cache source ve serviceCalls >0 tutarsızlığını seçer. Normal hit zero, inconsistent control one match verir; missing record zero sonucunu sağlıklı execution sayamaz.

    Call/result ledger
    Prepared handler result / client outside scope
    Execution comparison
    Zero-match needs coverage / positive control retained
    Coverage sonucu
    Recorded zero calls / distinct causes
  6. Kalıcı review sorusu

    Public cache contract, middleware order ve result source birlikte tutulur. Böylece bir 200 doğru public body olduğunu, doğru owner’da çalıştığını ve hangi teslim aşamasında olduğunu ayrı gösterir.

    Call/result ledger
    Prepared handler result / client outside scope
    Execution comparison
    Zero-match needs coverage / positive control retained
    Coverage sonucu
    Body/owner/delivery evidence distinct

Call kaydı eksik

  1. Yalnız 200 status

    Review yalnız status 200 biliyor, source ve callOrder yok. Cached response ile service response aynı status’u verebildiği için handler çalıştı sonucu çıkarılamaz.

    Call/result ledger
    200 known / source/calls missing
    Execution comparison
    Henüz değerlendirilmedi
    Coverage sonucu
    Henüz değerlendirilmedi
  2. Zero ile missing ayrımı

    Fixture’ın recorded serviceCalls 0 bilgisi yokluk değil bilinen sonuç. Eksik event’e zero yazmak da one yazmak da gözlenmeyen execution bilgisi ekler.

    Call/result ledger
    200 known / source/calls missing
    Execution comparison
    Missing count ≠ verified zero
    Coverage sonucu
    Henüz değerlendirilmedi
  3. Owner sonucunu açık bırak

    Current response source, service count ve client receipt UNKNOWN. HTTP status doğru olsa bile body correctness veya application policy sonucu henüz bilinmiyor.

    Call/result ledger
    200 known / source/calls missing
    Execution comparison
    Missing count ≠ verified zero
    Coverage sonucu
    Source/calls/client receipt UNKNOWN
  4. Gerekli call bağlamı

    Method/target, cache source, selected app, route result ve safe call counts gerekli. Aynı request correlation’ı bu owner’ları bağlamalı; raw credentials gerekmez.

    Call/result ledger
    Needed: request/source/target/route/calls
    Execution comparison
    Missing count ≠ verified zero
    Coverage sonucu
    Source/calls/client receipt UNKNOWN
  5. Body evidence ayrıca

    Beklenen Tea note JSON’u missing event’in body’si değildir. Representation receipt, decoding ve content check ayrı kaydedilmeden title başarısı eklenemez.

    Call/result ledger
    Needed: request/source/target/route/calls
    Execution comparison
    Expected JSON ≠ observed body
    Coverage sonucu
    Source/calls/client receipt UNKNOWN
  6. Yeni kanıtın sınırı

    Yeni record status’un hangi owner’dan geldiğini ve neyin çalıştığını yanıtlamalı. Bu olay yalnız 200 bilgisini korur; handler, database veya client başarısı üretilmez.

    Call/result ledger
    Needed: request/source/target/route/calls
    Execution comparison
    Expected JSON ≠ observed body
    Coverage sonucu
    Retain200 / collect scoped execution evidence

UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA

Operation zincirini receiver bilgisiyle doğrula

Client planındaki method, target ve public purpose edge defterine ancak request ulaştığında geçer. Edge policy kararını, cache source’u, seçilen application’ı ve runtime route match’i ayrı kaydet. Correlation alias credential değildir; raw header veya session değerleri yerine output’a uygun operation alanları seçilir. Karşılaştırma aynı public note ve compact query ile sınırlıdır; başka target’ın sonucu buraya taşınmaz.

Yerel adapter policy → cache decision → replica selection → fixed route → service read sırasını gözler. Cached dal yalnız policy ve cache kullanır. Public JSON byte’ları bağımsız decode edilerek id/title kontrol edilir; representation uzunluğu UTF-8 byte sayısıdır. Sonuç bu doğrudan adapter kapsamındadır. Gerçek proxy buffering, socket, TLS, HTTP/2 frame veya framework middleware execution ayrıca gözlenmedikçe bu ölçüme eklenmez.

Zero call ve missing observation farklıdır

Açıkça recorded serviceCalls=0 varsa no-handler dalı bilinir; hiç log kaydı olmaması aynı sonucu vermez. Edge 403, cached 200 ve route 404 için result source’u koru. No-ready upstream örneği WEB-21.02 ile bağlantılıdır. Availability, edge policy ve application semantics tek failure kutusuna sıkıştırılmaz. State’in değişmediği sonucu yalnız bu ordinary read fixture’a aittir.

XPath source=edge-cache ile serviceCalls>0 birlikteliğini seçer. Normal hit 0, tutarsız hazırlanmış kayıt 1 eşleşme verir; eksik kayıt yetersiz kanıttır. Kalıcı kontrol public cache contract’ını operation’a bağlamak, middleware sırasını görünür tutmak ve handler side effect boundary’sini açık yazmaktır. Response yazımının tamamlanması business commit ile eşit değildir; sonraki ders bu ayrımı persistence zincirine taşır.

ŞİMDİ VAKAYA UYGULA

200 veya 403 handler’ın çalıştığını gösterir mi?

Aynı public note için cache hit serviceCalls 0 ile 200 verir. Maintenance closure edge’de 403 üretirken route miss runtime’da 404 veriyor. Normal miss yalnız ready app-b’ye yöneliyor ve 31 byte JSON result hazırlıyor; client delivery bu örneğin bitişinden sonra.

Vakadaki representation hangi cache owner’dan geliyor? Key kapsamı, freshness ve kullanıcının context’ini birlikte değerlendir; hit olması doğru viewer’a ait olduğunu kanıtlamaz.

Bağlı vaka dosyasını aç ↗

ÖRNEĞİ BİRLİKTE OKUYALIM

Public request aktarım kaydı

Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.

Ham kaydı ve alan açıklamalarını oku
{
  "request": {
    "method": "GET",
    "target": "/notes/tea?view=compact",
    "host": "public.example.invalid",
    "publicPurpose": true,
    "bodyBytes": 0,
    "fragmentSent": false,
    "h1Projection": "GET /notes/tea?view=compact HTTP/1.1\r\nHost: public.example.invalid\r\nAccept: application/json\r\n\r\n",
    "projectionNotCapture": true
  },
  "origin": {
    "policyAllowed": true,
    "cacheHit": false,
    "ready": [
      {
        "id": "app-a",
        "ready": false
      },
      {
        "id": "app-b",
        "ready": true
      }
    ],
    "selected": "app-b",
    "callOrder": [
      "policy",
      "cache-miss",
      "select:app-b",
      "public-purpose",
      "route-match",
      "service-read"
    ],
    "serviceCalls": 1,
    "result": {
      "status": 200,
      "mediaType": "application/json",
      "body": "{\"id\":\"tea\",\"title\":\"Tea note\"}",
      "bodyBytes": 31,
      "source": "service"
    },
    "endsAt": "handler result prepared; client response not shown"
  },
  "cacheHit": {
    "policyAllowed": true,
    "publicContract": true,
    "currentAge": 2,
    "freshnessLifetime": 5,
    "callOrder": [
      "policy",
      "cache-hit"
    ],
    "serviceCalls": 0,
    "originCalls": 0,
    "result": {
      "status": 200,
      "body": "{\"id\":\"tea\",\"title\":\"Tea note\"}",
      "source": "edge-cache"
    },
    "ageIsSupplied": true
  },
  "closed": {
    "maintenanceClosed": true,
    "callOrder": [
      "policy"
    ],
    "status": 403,
    "source": "edge-policy",
    "forwarded": false,
    "serviceCalls": 0,
    "policyNotVendorRule": true
  },
  "routeMiss": {
    "method": "GET",
    "target": "/notes/missing?view=compact",
    "callOrder": [
      "public-purpose",
      "route-miss"
    ],
    "status": 404,
    "source": "runtime-router",
    "serviceCalls": 0
  },
  "limits": {
    "realHttp": false,
    "realCdn": false,
    "realWaf": false,
    "realLoadBalancerProxy": false,
    "expressRuntime": false,
    "tlsHopVerified": false,
    "privateAuthorizationVerified": false
  },
  "selector": {
    "language": "XPath",
    "xml": "<audit><response source=\"edge-cache\" serviceCalls=\"0\"/></audit>",
    "xpath": "count(/audit/response[@source='edge-cache' and number(@serviceCalls)>0])",
    "expected": 0,
    "positiveFixtureXml": "<audit><response source=\"edge-cache\" serviceCalls=\"1\"/></audit>",
    "positiveExpected": 1,
    "scope": "Own inert decision observations, not real vendor logs.",
    "missingFieldBehavior": "Missing observation is insufficient evidence, not a proven healthy or authorized result."
  }
}
request
HTTP/1.1 semantics gösterimi; gerçek capture değildir.
origin.callOrder
Yerel adapter’da gözlenen normal control sırası.
cacheHit
Public cache representation’ı ve verilen freshness koşulu.
closed / routeMiss
Edge policy ile runtime router farklı ret sonuçlarının sahibidir.

Sabit public read için yerel adapter sırası, JSON ve UTF-8 byte kontrolleri kullanılır. Gerçek proxy/socket/TLS/framework çalıştırılmaz; sahnedeki remote protocol ilişkileri kavramsaldır.

İki yanlış kanı

WAF allow veya gateway 200, application permission demektir.

Request filtering ve routing kararı private object authorization yerine geçmez.

Her başarılı request handler’a ve database’e gider.

Uygun public cache hit origin’i atlayabilir; çağrılan component’ler için ayrı observation gerekir.

SIRA SENDE

Bu hikâyeyi sen çöz.

Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.

Public cache candidate currentAge=2 ve freshnessLifetime=5. Cache-hit branch’inde service handler çağrılır mı?

  1. Evet. Cache hit yalnız log etiketidir; service her zaman çalışır.
  2. Hayır. serviceCalls=0 ve originCalls=0.
Gerekçeli cevabı oku

Hayır. serviceCalls=0 ve originCalls=0. — Policy ardından fresh public cache hit gelir. Bu branch response’u edge-cache’den oluşturur; handler’a gitmez.

Cache miss sonrasında hangi application seçilir? Bu iz client’ın body aldığını da gösterir mi?

Dersten seçilen artifact alanları; öğretim örneği

origin.ready
[{"id":"app-a","ready":false},{"id":"app-b","ready":true}]
origin.selected
app-b
origin.callOrder
["policy","cache-miss","select:app-b","public-purpose","route-match","service-read"]
origin.endsAt
handler result prepared; client response not shown
  1. app-b seçilir; iz handler sonucunun hazırlanmasıyla biter.
  2. app-a seçilir; 200 hazırlanması bütün client’lara delivery garantisi verir.
Gerekçeli cevabı oku

app-b seçilir; iz handler sonucunun hazırlanmasıyla biter. — app-a ready=false, app-b ready=true. Service sonucu hazırlanır, fakat client response delivery’si burada gösterilmez.

Maintenance 403 ile route-miss 404 için serviceCalls=0. Neden aynı ret noktası veya private authorization testi sayılmazlar?

Gerekçeli cevabı oku

Maintenance branch’i edge-policy’de forwarding’i durdurur; route-miss application router’da eşleşme bulamaz. İkisi de service’i çağırmaz, fakat farklı owner’lar karar verir. Bu request public-purpose örneğidir; private subject/object authorization doğrulanmış değildir. HTTP/1.1 text gösterimi packet capture değildir ve gerçek CDN/WAF/framework çalıştırılmaz.

□ 403 ve 404 sonuçlarını üreten owner’ları ayırdım.

□ Public routing sonucunu private authorization kanıtı saymadım.

Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç

Kaynaklar ve kapsam