Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-10.S01

Forms, JavaScript ve DOM data flow

Control value hangi aşamada request, JS value ve DOM text olur?

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

Native navigation

  1. Controls hazır

    Tea & Bread q değeri, repeated tag’ler ve browse submitter hazırdır. Bu dal constraintValid=true ve listenerCancel=false verir; browser henüz entry list’i encode etmedi veya native navigation request’i göndermedi.

    Browser document
    Controls hazır; DOM sonuç yok
    Owned book API
    Request yok; read yapılmadı
  2. Constraint/event

    Örnekte native validation geçer ve submit event iptal edilmez; default navigation devam eder.

    Browser document
    Native gate passed; entries pending
    Owned book API
    Request yok; read yapılmadı
  3. Entry encode

    Entry list, tekrarlanan tag’leri koruyarak encode edilir; GET navigation request’i hazırdır.

    Browser document
    GET navigation request hazır
    Owned book API
    Request yok; read yapılmadı
  4. Request geldi

    Normal read request API’ye ulaştı; server q contract ve resource policy henüz pending.

    Browser document
    GET navigation request hazır
    Owned book API
    Read request geldi; validation pending
  5. Local server gate

    Server’ın okuma policy’si bu örnekte kabul eder; Tea & Bread title, encoded HTML response için hazırlanır.

    Browser document
    GET navigation request hazır
    Owned book API
    HTML response hazır; title encoded
  6. Response geldi

    Native navigation response browser’a ulaştı; yeni document parser/DOM sonucu henüz pending.

    Browser document
    HTML response geldi; parse pending
    Owned book API
    HTML response hazır; title encoded
  7. Local HTML parser

    Seçilmiş benign HTML declaration parser outcome’u Tea & Bread text’idir; gerçek parser çalıştırılmaz.

    Browser document
    Yeni document text expected: Tea & Bread
    Owned book API
    HTML response hazır; title encoded
  8. Local DOM outcome

    Yeni document için benign h2 text outcome’u gösterilir; bu network arrival değil local render sonucudur.

    Browser document
    Yeni document title: Tea & Bread
    Owned book API
    HTML response hazır; title encoded

Fetch handler

  1. Controls hazır

    Form verisi hazırdır; bu dalda listener default navigation’ı iptal edip manualFetch=true yolunu seçecektir. Mevcut document korunacak, fakat ayrı Fetch request’i henüz yapılmadı ve server title okunmadı.

    Browser document
    Controls hazır; DOM sonuç yok
    Owned book API
    Request yok; read yapılmadı
  2. Local listener

    Submit listener preventDefault uygular; q’yu string olarak okur ve ayrı Fetch okuma request’ini hazırlar.

    Browser document
    Default cancelled; fetch request hazır
    Owned book API
    Request yok; read yapılmadı
  3. Fetch request geldi

    Ayrı fetch request API’ye ulaştı; native navigation başlamadı ve server gate henüz pending.

    Browser document
    Default cancelled; fetch request hazır
    Owned book API
    Fetch read geldi; validation pending
  4. Local server read

    Server aynı q/resource contract’ını kabul ederek normal JSON title response’unu hazırlar.

    Browser document
    Default cancelled; fetch request hazır
    Owned book API
    JSON title response hazır
  5. Response geldi

    Response browser’a ulaştı; handler’ın body okuması, JSON parse ve DOM update henüz tamamlanmadı.

    Browser document
    Response geldi; body pending
    Owned book API
    JSON title response hazır
  6. Local body read

    Handler selected JSON body’yi okur; title string elde edilir, DOM text henüz değişmez.

    Browser document
    Body parsed; title string hazır
    Owned book API
    JSON title response hazır
  7. Local function scope

    Callback lexical q binding’ine erişir; closure input’a trust eklemez ve output text hâlâ plain data’dır.

    Browser document
    Handler title hazır; textContent pending
    Owned book API
    JSON title response hazır
  8. Local textContent

    h2.textContent’a title’ın kendisi atanır; mevcut document içinde Tea & Bread, literal text olarak gösterilir.

    Browser document
    Mevcut DOM literal: Tea & Bread
    Owned book API
    JSON title response hazır

Constraint reddi

  1. Controls hazır

    Form verisi hazırdır, fakat bu dal constraintValid=false verir. Browser’ın yerel feedback’i server reddi değildir; henüz hiçbir submission, request veya yeni book response yoktur.

    Browser document
    Controls hazır; DOM sonuç yok
    Owned book API
    Request yok; read yapılmadı
  2. Local browser gate

    Bu senaryoda constraint geçmez veya submit listener default’u iptal eder; server’a hiçbir message ulaşmaz.

    Browser document
    Constraint denied; network yok
    Owned book API
    Request yok; read yapılmadı
  3. Local feedback

    Browser UI normal feedback verir; server validation ve resource lookup bu branch’ta çalışmış sayılmaz.

    Browser document
    Local feedback; server unchanged
    Owned book API
    Request yok; read yapılmadı
  4. Terminal state

    Bu local outcome mevcut document’i korur; yeni book response veya DOM result üretilmez.

    Browser document
    Yeni result yok; local bitti
    Owned book API
    Request yok; read yapılmadı

Listener cancel

  1. Controls hazır

    Form constraint’i uygundur; listenerCancel=true ve manualFetch=false seçilmiştir. Default navigation yerelde duracaktır ve yerine başka request başlatılmayacaktır. Server henüz bu form verisini almamıştır.

    Browser document
    Controls hazır; DOM sonuç yok
    Owned book API
    Request yok; read yapılmadı
  2. Local browser gate

    Bu senaryoda constraint geçmez veya submit listener default’u iptal eder; server’a hiçbir message ulaşmaz.

    Browser document
    Default cancelled; network yok
    Owned book API
    Request yok; read yapılmadı
  3. Local feedback

    Browser UI normal feedback verir; server validation ve resource lookup bu branch’ta çalışmış sayılmaz.

    Browser document
    Local feedback; server unchanged
    Owned book API
    Request yok; read yapılmadı
  4. Terminal state

    Bu local outcome mevcut document’i korur; yeni book response veya DOM result üretilmez.

    Browser document
    Yeni result yok; local bitti
    Owned book API
    Request yok; read yapılmadı

ROLLER · STATE · VERİ AKIŞI

Control’dan entry list’e

Atlas’ın search form’u Tea & Bread başlığını q adıyla taşır; input’un id’si label/DOM lookup için kullanılırken name submission anahtarıdır. Entry list bütün görünen control’ların kopyası değildir: disabled control, unchecked checkbox, isimsiz alan ve seçilmemiş submit button dışarıda kalır. Readonly text control disabled değildir ve name’i varsa gönderilebilir. Aynı tag adı web/http için iki kez bulunur; entry list bunu ordered iki entry olarak korur. Plain object’e hemen çevirmek repeated field’ı kaybettirebilir. Hidden veya readonly value server için trusted identity değildir; bunlar UI/submission özellikleridir.

Submission birden fazla karar içerir

Normal submitter seçildikten sonra browser constraint validation ve cancelable submit event’i değerlendirir; listener preventDefault ile default navigation’ı durdurabilir. Seçilmiş native GET branch’ı UTF-8 URL-encoded entries ile navigation request’i hazırlar. fetch branch’ında listener default’u durdurur ve kendi ordinary read request’ini ayrıca hazırlar; fetch çağrısı native form navigation değildir. requestSubmit normal submitter/validation/event yolunu kullanır; submit() doğrudan yolunun aynı event/validation davranışını verdiği varsayılmaz. Browser kontrolü kullanıcı deneyimidir; server q tür/boyut contract’ını ve resource policy’yi ayrıca değerlendirir.

JavaScript value, function ve lexical scope

Text control’dan okunan "2" string’dir; string + number concatenation yapabilir, explicit Number dönüşümü ise ayrı number üretir ve domain kontrolü hâlâ gerekir. null ile undefined veya missing field aynı uygulama anlamı değildir. let/const block scope taşır; var’ın function scope’u farklıdır. const object binding’ini sabitler, içindeki title’ı otomatik immutable yapmaz. Function input/return sınırını açık tutmak DOM okuma ile normalize/policy/render kararını ayırır. Callback lexical çevresindeki q binding’ine closure ile erişebilir; bu binding’in captured olması input’u trusted yapmaz. Scene’de JS/body parse/DOM update local’dir; function çağrısı ayrı network paketi gibi çizilmez.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

Entry kaybı

  1. Control’leri oku

    q Tea & Bread, tag web/http ve readonly view cards form verisine katılıyor. Disabled draft, isimsiz control ve işaretlenmeyen archived katılmıyor; submitter browse mode’u belirliyor.

    Control ve entry listesi
    Ordered entries / repeated tag / mode browse
    Dönüşüm ve policy
    Henüz değerlendirilmedi
    İşlem sonucu
    Henüz değerlendirilmedi
  2. Tek key kaybını gör

    Tag entry’lerini tek key’li object’e indirmek iki değerden birini kaybettirebilir. Receiver’ın hangi representation’ı kabul ettiği açık olmalı; readonly view da trusted identity değildir.

    Control ve entry listesi
    Ordered entries / repeated tag / mode browse
    Dönüşüm ve policy
    Repeated tag must remain ordered
    İşlem sonucu
    Henüz değerlendirilmedi
  3. Başlık ayıracı değil

    Tea & Bread içindeki ampersand başlığın parçası. URL serializer %26 ve space için + kullanıyor; encoded query’yi elle bölmek normal başlığın anlamını değiştirebilir.

    Control ve entry listesi
    Ordered entries / repeated tag / mode browse
    Dönüşüm ve policy
    Repeated tag must remain ordered
    İşlem sonucu
    q=Tea+%26+Bread / decoded Tea & Bread
  4. String ile number

    rawPage string 2 iken + 1 sonucu string 21. Açık Number dönüşümü 3 verir. Bu yerel hesap farkı server limit veya izin kuralını browser görünümünden türetmememiz gerektiğini gösteriyor.

    Control ve entry listesi
    String 21 / explicit number 3
    Dönüşüm ve policy
    Repeated tag must remain ordered
    İşlem sonucu
    q=Tea+%26+Bread / decoded Tea & Bread
  5. Server kuralını koru

    Server string query ve queryMax 40 sözleşmesini uygular; kullanıcı veya tenant bağını kendi güvenilir context’inden almalıdır. Client readonly veya closure bu context’i oluşturmaz.

    Control ve entry listesi
    String 21 / explicit number 3
    Dönüşüm ve policy
    Type/size/meaning / independent server authority
    İşlem sonucu
    q=Tea+%26+Bread / decoded Tea & Bread
  6. Veri anlamını koru

    Entry sırası, repeated field, submitter ve dönüşüm açık kalınca normal arama aynı anlamı taşır. Bu veri doğruluğu server permission ile eşitlenmez; iki sonuç ayrı doğrulanır.

    Control ve entry listesi
    String 21 / explicit number 3
    Dönüşüm ve policy
    Type/size/meaning / independent server authority
    İşlem sonucu
    Data preserved / server permission separate

Yerel iptal

  1. Constraint engeli

    Constraint-denied satırında constraintValid false ve network false. Normal submit yolundaki local feedback, server’ın request’i aldığı veya reddettiği anlamına gelmiyor.

    Control ve entry listesi
    Constraint false / network false
    Dönüşüm ve policy
    Henüz değerlendirilmedi
    İşlem sonucu
    Henüz değerlendirilmedi
  2. Listener iptali

    Listener-cancel constraint’i geçiyor, fakat listenerCancel true ve manualFetch false. Default navigation iptal edildiği için network yine false; validation ile event kararı ayrı.

    Control ve entry listesi
    Constraint false / network false
    Dönüşüm ve policy
    Listener cancelled / no manual fetch
    İşlem sonucu
    Henüz değerlendirilmedi
  3. Olmayan server sonucu

    İki local branch’te server response veya query validation başarısı yazılamaz. UI’nın aynı kalması server mutation’ın reddedildiği kanıtı değil; request hiç oluşmamıştır.

    Control ve entry listesi
    Constraint false / network false
    Dönüşüm ve policy
    Listener cancelled / no manual fetch
    İşlem sonucu
    No request / no server validation evidence
  4. Fetch handler farkı

    Fetch-handler default navigation’ı iptal eder, fakat manualFetch true ile network oluşturur. cancel edilmiş event her koşulda ağsız akış demek değildir; handler’ın sonraki işi gerekir.

    Control ve entry listesi
    Cancelled default / explicit fetch true
    Dönüşüm ve policy
    Listener cancelled / no manual fetch
    İşlem sonucu
    No request / no server validation evidence
  5. Response’u doğru bağla

    Navigation HTML’i yeni document yoluna, fetch JSON’u handler’ın body ve textContent yoluna gider. Headers’ın gelmesi DOM update’in tamamlandığını göstermez; Tea & Bread text olarak korunur.

    Control ve entry listesi
    Cancelled default / explicit fetch true
    Dönüşüm ve policy
    Navigation HTML ≠ fetch handler DOM
    İşlem sonucu
    No request / no server validation evidence
  6. Yerel ve remote sonucu ayır

    Cancellation, request, body ve UI binding farklı aşamalardır. Closure’ın Book: Tea & Bread üretmesi normal yerel function sonucudur; async response correlation veya server grant’i kanıtlamaz.

    Control ve entry listesi
    Cancelled default / explicit fetch true
    Dönüşüm ve policy
    Navigation HTML ≠ fetch handler DOM
    İşlem sonucu
    Local computation ≠ response authority

VARSAYIM · SINIR · KONTROL

Client state’i server authority sanmak

Form q alanının required olması yalnız seçilmiş browser’ın normal submit yolunda boş değer için UI feedback sağlar. Readonly veya hidden alanın görünümü, server’ın bu değeri subject/tenant olarak kabul etmesini haklı çıkarmaz. Güven sınırı request receiver’da bulunur: entry string’i decode edilir, tür/boyut/iş anlamı ve server-owned identity bağlamı değerlendirilir. Bu derste Red lens gerçek form üzerinde değişiklik denemesi üretmez; trusted context ile taşınmış UI değeri arasında hangi varsayımın bozulabileceğini contract’tan çıkarır. Native ve fetch branch’ları aynı server kuralını kullanmalıdır.

Bir local dönüşüm sessiz veri kaybı yaratabilir

Repeated tag entry’lerini single-key object’e indirgemek, submitter’ın mode değerini unutmak veya + işaretini yanlış çözmek ordinary request’in anlamını değiştirir. Tea & Bread’daki ampersand başlığın parçasıdır; URL serializer onu field separator gibi bırakmaz. String "2" ile number 2’yi bilinçsizce eşitlemek de limit veya UI hesaplarını şaşırtabilir. Closure kullanıldığı için son response’un doğru aramaya ait olduğu otomatik söylenemez: async reply order ve correlation ayrıca tasarlanır. Client validation denied veya listener cancel branch’ında server kartının değişmemesi beklenir; olmayan request’i başarılı server validation diye sayamayız.

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

Hareket olmadan bütün senaryoları oku

Entry roundtrip

  1. Ordered girdileri seç

    Form defteri authored controls, entries ve branch koşullarını sağlar; URLSearchParams yerel encoding sonucunu üretir. Gerçek Browser gözleminde submitter/constraint/submit event’ini browser, q tür/boyut ve read kararını server, response parse ve textContent sonucunu client handler üretir. Yerel iptal dallarında server producer’a ulaşılmış değildir. Entries q, iki tag, view ve mode’u sırayla taşır. Bu text-only profile’da file/multipart davranışı yok; inventory ve seçilen submitter normal arama için yeterli dar veri kümesini tanımlar.

    Form ledger
    q / tag web / tag http / view / mode
    Contract review
    Henüz değerlendirilmedi
    Regression sonucu
    Henüz değerlendirilmedi
  2. Encoding kontrolü

    Encoded representation URLSearchParams ile karşılaştırılıyor. Decode sonunda Tea & Bread ve ordered web/http tag listesi geri gelmeli; separator ile veri birbirine karışmamalı.

    Form ledger
    q / tag web / tag http / view / mode
    Contract review
    Roundtrip q + both tags + mode
    Regression sonucu
    Henüz değerlendirilmedi
  3. Yerel tür kontrolü

    String 21 ile number 3 ayrı beklenen sonuçlar. const object’in title’ı Bread & Tea olarak güncellenebilir; const binding, object verisinin değişmez veya güvenilir olduğunu söylemez.

    Form ledger
    q / tag web / tag http / view / mode
    Contract review
    Roundtrip q + both tags + mode
    Regression sonucu
    Coercion/mutation expectations separate
  4. İki response yolu

    Native HTML Tea & Bread taşır; fetch JSON title Tea & Bread’dır. HTML parser ile textContent aynı interpreter değildir; kullanılacak output context response representation’dan ayrı seçilir.

    Form ledger
    HTML escaped / JSON string / text binding
    Contract review
    Roundtrip q + both tags + mode
    Regression sonucu
    Coercion/mutation expectations separate
  5. Dört branch’i karşılaştır

    Normal navigation ve fetch-handler network true; constraint-denied ve listener-cancel network false. İkinci çiftte server kartı değişmez, fakat bu server’ın request’i reddettiği iddiası değildir.

    Form ledger
    HTML escaped / JSON string / text binding
    Contract review
    Two network branches / two local stops
    Regression sonucu
    Coercion/mutation expectations separate
  6. Dar kanıtı bildir

    Yerel veri, encoding ve function sonuçları hesaplanabilir. Browser control inclusion, submit event, navigation ve DOM update için ayrı gözlem gerekir; Node sonucu bu aşamaların kanıtını devralmaz.

    Form ledger
    HTML escaped / JSON string / text binding
    Contract review
    Two network branches / two local stops
    Regression sonucu
    Native data known / browser stages separate

Handler boşluğu

  1. Başlık tek gözlem

    Form defteri authored controls, entries ve branch koşullarını sağlar; URLSearchParams yerel encoding sonucunu üretir. Gerçek Browser gözleminde submitter/constraint/submit event’ini browser, q tür/boyut ve read kararını server, response parse ve textContent sonucunu client handler üretir. Yerel iptal dallarında server producer’a ulaşılmış değildir. İnceleme yalnız Tea & Bread başlığını görüyor; navigation mı fetch handler mı çalıştı bilinmiyor. Aynı text iki farklı response ve UI yolundan gelebilir.

    Form ledger
    Title known / response path missing
    Contract review
    Henüz değerlendirilmedi
    Regression sonucu
    Henüz değerlendirilmedi
  2. Görünümü yetki sayma

    Readonly control veya doğru heading server subject/tenant bağını göstermez. Server response ve handler body kaydı olmadan UI text’i başarılı remote validation diye adlandıramıyoruz.

    Form ledger
    Title known / response path missing
    Contract review
    Visible title ≠ server context evidence
    Regression sonucu
    Henüz değerlendirilmedi
  3. Aşamayı belirsiz tut

    Bu gözlem için submit mode, request receipt ve body completion UNKNOWN kalıyor. Normal entry listesi beklenen örnektir; eksik handler kaydının yerine yapıştırılmaz.

    Form ledger
    Title known / response path missing
    Contract review
    Visible title ≠ server context evidence
    Regression sonucu
    Mode/receipt/body completion UNKNOWN
  4. Gerekli correlation

    Seçilen submitter, entry listesi, cancellation ve manualFetch kararı aynı işe bağlanmalı. Response status/body ile UI update kaydı sonraki aşamayı ayrı yanıtlar.

    Form ledger
    Needed: submitter/entries/branch/response
    Contract review
    Visible title ≠ server context evidence
    Regression sonucu
    Mode/receipt/body completion UNKNOWN
  5. Closure sonucunu sınırla

    Book: Tea & Bread closure sonucu ve inner/outer scope örnekleri yerel JavaScript davranışını açıklar. Bu sonuçlar event sırasını veya response’un doğru request’e bağlandığını kendiliğinden kanıtlamaz.

    Form ledger
    Needed: submitter/entries/branch/response
    Contract review
    Local function result / correlation separate
    Regression sonucu
    Mode/receipt/body completion UNKNOWN
  6. Yeni incelemenin sınırı

    Yeni kayıt normal navigation, fetch ve yerel iptal kontrollerini ayrı doğrulamalı. Bu eksik olay için doğru başlığın görülmesi dışında remote başarı iddiası eklenmiyor.

    Form ledger
    Needed: submitter/entries/branch/response
    Contract review
    Local function result / correlation separate
    Regression sonucu
    Retain title / collect scoped branch evidence

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

Entry, conversion ve policy için açık contract

Form defteri authored controls, entries ve branch koşullarını sağlar; URLSearchParams yerel encoding sonucunu üretir. Gerçek Browser gözleminde submitter/constraint/submit event’ini browser, q tür/boyut ve read kararını server, response parse ve textContent sonucunu client handler üretir. Yerel iptal dallarında server producer’a ulaşılmış değildir. Form control inventory’si name/type/checked/disabled/readonly ve submitter etkisini belirtir; repeated field’lar entry list olarak korunur. Seçilmiş GET profile q/tag/mode’u URLSearchParams ile encode eder; decoding sonunda aynı string ve ordered tags geri gelmelidir. File veya multipart sınırları ayrı contract’tır ve bu text-only fixture onlara davranış atfetmez. Normalize fonksiyonu raw string’den ayrı çıktı verir; Number dönüşümü, finite/domain kontrolü ve string output farklı işlemlerdir. Server subject/tenant’ı kendi trusted bağından alır; form alanı bu bağı oluşturmaz.

Local DOM outcome’u response receipt’inden ayır

Native navigation response’u yeni document parser yoluna, fetch response’u handler’ın body okuma ve UI update yoluna gider. Headers/status’ın gelmesi body parse veya DOM update’in tamamlanması değildir. Fetch handler normal book title’ı ordinary h2.textContent ile yazar; HTML pre-escaping bu setter için gerekmez. Function/scope örnekleri Node’da plain data üstünde gerçekten hesaplanabilir, fakat Node’da closure testinin geçmesi submit event, constraint validation veya DOM parser’ın çalıştığı anlamına gelmez. Regression branch’ları normal native/fetch, invalid constraint ve listener cancel için wire/local decision sınırını ayrı kaydeder.

ŞİMDİ VAKAYA UYGULA

Readonly alan veya closure girdiyi güvenilir yapar mı?

Atlas arama formu Tea & Bread başlığını, iki tag değerini ve seçilen browse submitter’ını taşıyor. Browser navigation ile fetch handler aynı server kuralına tabi, fakat response’u farklı UI yollarında kullanıyor. Client validation veya listener cancellation request oluşmadan akışı durdurabilir.

Vakadaki response receipt, parsing, callback ve görünür DOM sonucunu sıraya koy. Eski başlığın kalmasını bu dersteki browser state ayrımlarıyla açıklamayı dene.

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

ÖRNEĞİ BİRLİKTE OKUYALIM

Atlas form entry ve handler ledger

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

Ham kaydı ve alan açıklamalarını oku
{
  "profile": {
    "action": "https://atlas.example.org/books",
    "method": "GET",
    "encoding": "application/x-www-form-urlencoded",
    "selectedSubmitter": "browse",
    "textOnly": true,
    "serverReadPermissionDeclared": true,
    "actualDOM": false,
    "actualSubmission": false
  },
  "controls": [
    {
      "name": "q",
      "type": "text",
      "value": "Tea & Bread",
      "disabled": false,
      "readonly": false
    },
    {
      "name": "tag",
      "type": "text",
      "value": "web",
      "disabled": false
    },
    {
      "name": "tag",
      "type": "text",
      "value": "http",
      "disabled": false
    },
    {
      "name": "view",
      "type": "text",
      "value": "cards",
      "readonly": true,
      "disabled": false
    },
    {
      "name": "draft",
      "type": "text",
      "value": "ignored",
      "disabled": true
    },
    {
      "name": "",
      "type": "text",
      "value": "unnamed",
      "disabled": false
    },
    {
      "name": "archived",
      "type": "checkbox",
      "value": "yes",
      "checked": false,
      "disabled": false
    },
    {
      "name": "mode",
      "type": "submit",
      "value": "browse",
      "id": "browse",
      "disabled": false
    },
    {
      "name": "mode",
      "type": "submit",
      "value": "print",
      "id": "print",
      "disabled": false
    }
  ],
  "entries": [
    [
      "q",
      "Tea & Bread"
    ],
    [
      "tag",
      "web"
    ],
    [
      "tag",
      "http"
    ],
    [
      "view",
      "cards"
    ],
    [
      "mode",
      "browse"
    ]
  ],
  "encoded": "q=Tea+%26+Bread&tag=web&tag=http&view=cards&mode=browse",
  "server": {
    "queryType": "string",
    "queryMax": 40,
    "responseTitle": "Tea & Bread",
    "nativeHTML": "<h2>Tea &amp; Bread</h2>",
    "fetchJSON": {
      "title": "Tea & Bread"
    }
  },
  "branches": [
    {
      "case": "normal",
      "constraintValid": true,
      "listenerCancel": false,
      "manualFetch": false,
      "network": true,
      "mode": "navigation"
    },
    {
      "case": "fetch-handler",
      "constraintValid": true,
      "listenerCancel": true,
      "manualFetch": true,
      "network": true,
      "mode": "fetch"
    },
    {
      "case": "constraint-denied",
      "constraintValid": false,
      "listenerCancel": false,
      "manualFetch": false,
      "network": false,
      "mode": "none"
    },
    {
      "case": "listener-cancel",
      "constraintValid": true,
      "listenerCancel": true,
      "manualFetch": false,
      "network": false,
      "mode": "none"
    }
  ],
  "jsFixtures": {
    "rawPage": "2",
    "stringPlusOne": "21",
    "explicitNumberPlusOne": 3,
    "objectTitle": "Tea & Bread",
    "constObjectAfterUpdate": "Bread & Tea",
    "closurePrefix": "Book: ",
    "closureResult": "Book: Tea & Bread",
    "blockOuter": "outer",
    "blockInner": "inner"
  },
  "boundaries": {
    "clientValidationGrantsServerPermission": false,
    "readonlyIsTrustedIdentity": false,
    "closureMakesInputTrusted": false,
    "fetchEqualsNavigation": false
  }
}
controls
Sabit text-only control inventory; checkbox ve submitter inclusion açık.
entries
Ordered repeated tag entries korunur.
encoded
Normal title’ın UTF-8 form URL encoding representation’ı.
branches
Constraint/event/default navigation ile explicit fetch kararı ayrı.
jsFixtures
Finite native type/coercion/function/closure/scope sonuçları.

Original inert text-only form ledger; native Node plain data/URL encoding mümkün, actual browser control/event/FormData/navigation/DOM execution değil.

İki yanlış kanı

Readonly ve hidden alanlar trusted server değeridir.

Bu UI özellikleri permission veya identity kanıtı sağlamaz; server-owned context ayrıdır.

fetch form submission ile aynı navigation’dır.

Default submission cancel edilebilir; fetch ayrı request/body/handler/UI akışı izler.

SIRA SENDE

Bu hikâyeyi sen çöz.

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

Submit listener navigation’ı iptal ediyor, fakat manualFetch=true. Bu branch’te network=false sonucu çıkar mı?

  1. Hayır. Navigation iptal; network=true ve mode=fetch.
  2. Evet. preventDefault bütün olası request’leri yasaklar.
Gerekçeli cevabı oku

Hayır. Navigation iptal; network=true ve mode=fetch. — Listener’ın cancellation sonucu varsayılan navigation’ı durdurur. Ayrı manual fetch yine request üretebilir; fetch navigation ile aynı akış değildir.

Readonly view neden entries içinde, disabled draft ve unchecked archived neden dışında?

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

controls[3]
{"name":"view","type":"text","value":"cards","readonly":true,"disabled":false}
controls[4]
{"name":"draft","type":"text","value":"ignored","disabled":true}
controls[6]
{"name":"archived","type":"checkbox","value":"yes","checked":false,"disabled":false}
entries
[["q","Tea & Bread"],["tag","web"],["tag","http"],["view","cards"],["mode","browse"]]
  1. Readonly hiçbir zaman gönderilmez; bütün checkbox’lar her zaman gönderilir.
  2. Readonly edit’i sınırlar; disabled ve unchecked alanlar bu entry listesine girmez.
Gerekçeli cevabı oku

Readonly edit’i sınırlar; disabled ve unchecked alanlar bu entry listesine girmez. — view=cards gönderilebilir. draft disabled olduğu, archived ise unchecked olduğu için dışarıda kalır. Bu koşullar server input’unu güvenilen kimlik yapmaz.

rawPage="2" için stringPlusOne="21", explicitNumberPlusOne=3. Bu farkı ve client validation’ın server permission vermemesini açıkla.

Gerekçeli cevabı oku

Form’dan gelen "2" string’dir; string ile + işlemi concatenation üretebilir. Açık number dönüşümü sonrasında 2+1=3 hesaplanır. Client validation submission’ı sınırlandırabilir, fakat server type/range ve permission kontrollerini ayrıca yapmalıdır. Readonly veya closure içinde taşınmak input’u güvenilen hale getirmez. Bu örnek yalnız public book araması için verilen alanları açıklar; gerçek submission çalıştırmaz.

□ String concatenation ile numeric addition’ı ayırdım.

□ Client validation veya readonly flag’inden server izni çıkarmadım.

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

Kaynaklar ve kapsam