WEB / WEB-22.02
HTTP’den handler’a
Public GET’i edge, proxy, runtime ve handler boyunca takip ederek response’un sahibini ayır.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Origin handler
- 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ı
- 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ı
- 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ı
- 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ı
- 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ı
- 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ı
- 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ı
- 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
- 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ı
- 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ı
- 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ı
- 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ı
- 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
- 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ı
- 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ı
- 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ı
- 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ı
- 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ı
- 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ı
- 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ı
- 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ı
- 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
- 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
- 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
- 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
- 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
- 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
- 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ı
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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ı?
- Evet. Cache hit yalnız log etiketidir; service her zaman çalışır.
- 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
- app-b seçilir; iz handler sonucunun hazırlanmasıyla biter.
- 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
- RFC 9110 — HTTP Semantics3.3. Connections, Clients, and Servers · 3.7. Intermediaries · 7.1. Determining the Target Resource · 9.3.1. GET
- AWS CloudFront — delivery roleHow CloudFront delivers content to your users
- AWS WAF — named request-policy exampleWhat is AWS WAF?
- NGINX — proxy module, current docsproxy_pass
- Node.js v26.11.1 — HTTPClass: http.IncomingMessage · message.url · message.method
- Express — Using middleware (framework example only)Using middleware · Application-level middleware · Router-level middleware
- RFC 9111 — HTTP Caching4. Constructing Responses from Caches · 5.2.2.9. public
- RFC 9113 — HTTP/2 frames4.1. Frame Format
- RFC 9114 — HTTP/32. HTTP/3 Protocol Overview
- OWASP — AuthorizationIntroduction