Hacker DirectoryHacker Directory

WEB / WEB-12.02

Cookie scope, lifetime and flags

Explain cookie inclusion or exclusion on a request using scope, lifetime, channel and site context.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mechanism

Read every scenario without motion

Normal same-host

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

Host-only vs Domain

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://api.library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ×/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: included
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: included
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: included
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

/books ≠ /bookstore

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/bookstore · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ×/×
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

HTTP · Secure excluded

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET http://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ×/×
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

Lax · top-level GET

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

Lax · background POST

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    POST https://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ×/× · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

t=1300 · expired

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/books/42 · t=1300
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ×/×
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=1300
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

None · privacy block

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ×/× · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

Strict · cross-site

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ×/× · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

HttpOnly · script no

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

Script-readable

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: yes/yes
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: included · Domain: included
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: yes/yes

Unrelated host · excluded

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://other.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ×/× · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ✓/✓
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

Credentials omitted

  1. Two alternative cookie configurations

    Host-only and Domain=outreason.example are alternative hypothetical configurations, not colliding hd_scope records in one jar. Each is an already accepted stored candidate.

    Browser · candidate jar
    H: host-only · D: parent Domain
    Application · request received
    No request yet
    Request · selection context
    Path=/books · Max-Age=1200
  2. The request context is selected explicitly

    The fixture explicitly supplies target, method, top-level navigation and same-site metadata. Same-site is not same-origin; this model does not compute a Public Suffix List or redirect chain.

    Browser · candidate jar
    Candidate selection pending
    Application · request received
    No request yet
    Request · selection context
    GET https://library.outreason.example/books/42 · t=200
  3. Host and slash-path gates

    Host-only requires the exact host; a parent Domain can include matching subdomains. /books matches /books/42 but not /bookstore. Path is not authorization or application isolation.

    Browser · candidate jar
    host H/D ✓/✓ · path H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Local scope evaluation
  4. Browser lifetime is calculated separately

    Explicit browser model clock: created at t=100, Max-Age=1200; expired at and after t=1300. This selection model does not calculate server session time or revocation.

    Browser · candidate jar
    lifetime H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Browser clock t=200
  5. Channel and script access differ

    Secure requires an ordinary HTTPS channel; the labelled HTTP case is not a loopback exception. HttpOnly restricts script API access while eligible requests may still carry the cookie. Script-read here assumes a document at the target context.

    Browser · candidate jar
    channel H/D ✓/✓
    Application · request received
    No request yet
    Request · selection context
    Script read H/D: no/no
  6. Site and browser request-policy gates

    Explicit Lax can permit safe cross-site top-level navigation, but not background POST. Strict excludes cross-site requests. None does not override scope, privacy or credentials. These models do not implement prefix, partition or default-Lax compatibility parsing.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    No request yet
    Request · selection context
    sameSite H/D ✓/✓ · privacy H/D ✓/✓ · credentials H/D ×/×
  7. The HTTP request arrived with selected state

    An HTTP request can still occur when a cookie is excluded. Eligibility is shown separately for the alternatives; browser selection is not application permission.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Request received; cookie inclusion separate
    Request · selection context
    HTTP request arrived
  8. Cookie presence is only an observation

    If name/value arrived, the server evaluates it under its own validation and policy. This pure simulation proves neither a real browser jar, successful authentication nor entitlement.

    Browser · candidate jar
    Host-only: excluded · Domain: excluded
    Application · request received
    Server validity/authz separate
    Request · selection context
    Script read H/D: no/no

ACTORS · STATE · DATA FLOW

The cookie is in the jar; why is it missing from the request?

Duru’s Browser shows an hd_scope record for the Atlas library, yet a request to another URL may omit it. Inclusion is not one “cookie exists” question: scope, lifetime, transport, site context and Browser policy are evaluated together.

This lesson makes no application-permission decision. Its goal is explaining whether the Browser includes a candidate record on a request. Included does not mean the server accepts an authenticated session or permits reading a book. WEB-13 sessions and WEB-14 authorization separate those later decisions.

Omitting Domain makes a cookie host-only; setting it broadens scope

A cookie set by library.outreason.example without Domain is host-only: it is a candidate for that host, not automatically for api.library.outreason.example. With Domain=outreason.example, it can be a candidate for that domain and eligible subdomains. A server cannot freely choose an unrelated domain or public suffix.

The artifact compares two separate scope definitions rather than simultaneous same-name cookie collisions. The subdomain case excludes the host-only version and includes the domain-scoped version. This difference follows Browser host matching, not a page path or tenant permission.

Cookie scope is not origin. Origin uses scheme/host/port; cookie domain/path rules are different. Cookies do not isolate ports. Different ports or paths alone do not create separate cookie security areas for applications on the same host.

Path matching is more than guessing a string prefix

A cookie with Path=/books can match /books and /books/42, but not /bookstore. The slash boundary matters. An omitted Path defaults from the URL of the request associated with the response; do not assume it is always /.

The selection limits transmission on requests. It does not create dependable isolation between /admin and /books applications on the same host. UI routing and cookie Path filters do not replace server authorization.

Lifetime describes retention and the Browser session

Max-Age expresses cookie lifetime in seconds; Expires uses a date. Max-Age takes precedence when both are present. Our artifact assumes Browser creation at t=100 with Max-Age=1200 and considers the cookie expired at t=1300. This explicit model clock is not a captured real clock.

A session cookie lacks Max-Age/Expires. The Browser defines the end of its session, and session restore may bring the record back. A persistent cookie has a lifetime but is not guaranteed retention until that deadline: user cleanup, privacy policy or storage eviction may remove it earlier.

Do not equate Browser lifetime with server session expiry. The server can reject a session while its cookie remains, and deleting the jar record does not automatically invalidate a server record. WEB-13.03 develops their separate lifecycles.

Secure and HttpOnly control different things

In ordinary web use, Secure requires HTTPS transport; this excludes the artifact’s HTTP case. Localhost exceptions and Browser compatibility need separate assessment. Secure alone does not protect the value against disk or script access.

HttpOnly restricts script cookie APIs. Eligible fetch or other requests can still include the cookie; the flag does not mean “a request cannot be made.” Restricting script access to a session handle and authorizing an action protect different boundaries.

A supporting Browser requires Secure + Path=/ + no Domain for a __Host- name. The artifact’s /books scope example does not use that prefix, avoiding an invalid combination. Choose prefix compatibility and application-host design together.

Read SameSite with method and navigation context

Same-site evaluation uses scheme and registrable-domain context; it is not equivalent to same-origin. Lax can allow same-site requests. For cross-site requests, explicit Lax also considers top-level navigation and a safe method: a normal GET link navigation differs from a background POST fetch.

Strict limits cross-site inclusion more tightly. None allows cross-site inclusion and requires Secure, but does not remove every other condition or Browser privacy policy. Default behavior and temporary compatibility exceptions can depend on the Browser; our explicit Lax fixture does not assume a default shortcut.

Fetch credentials mode is an additional control. Its same-origin default may omit cookies on a cross-origin fetch, and include does not override SameSite or third-party restrictions. CORS separately evaluates script access to responses. One “cross-domain enabled” switch cannot model all these decisions.

Third-party context adds a policy gate

A library widget embedded on another site can encounter blocked or partitioned third-party state even with SameSite=None; Secure. Without observing application/Browser version, user settings and context, do not claim None works everywhere. The lesson does not treat a vendor roadmap as a Browser guarantee.

In the artifact, a blocked privacy gate produces exclusion despite other eligible gates. That is not evidence of a parser defect or failed authentication. Explain storage acceptance, request inclusion and server validity independently.

2. Red · Trust & Impact

Read every scenario without motion

Host scope

  1. Candidate configurations were separated

    host-only and domain-scoped are not two concurrent cookies with the same name. The artifact compares alternative configurations; both use Path=/books, Secure and HttpOnly.

    Cookie candidates
    hd_scope: two separate candidates
    Request context
    Context not selected
    Decision boundary
    No inclusion decision
  2. The request context was selected

    The selected case targets api.library.outreason.example. GET, now_s=200 and sameSite=true are fixed conditions; this scene explains eligibility without dispatching a request.

    Cookie candidates
    hd_scope: two separate candidates
    Request context
    api.library.outreason.example
    Decision boundary
    No inclusion decision
  3. The matching gate was evaluated

    The host-only record applies only to library.outreason.example.

    Cookie candidates
    host-only=false; domain-scoped=true
    Request context
    api.library.outreason.example
    Decision boundary
    No inclusion decision
  4. The eligibility result was separated

    Domain scoping expands subdomain eligibility, but does not establish equal trust or shared authorization between applications.

    Cookie candidates
    host-only=false; domain-scoped=true
    Request context
    api.library.outreason.example
    Decision boundary
    host_only_does_not_match_subdomain
  5. Flags do not replace permission

    Secure constrains transport eligibility and HttpOnly constrains script access. Neither flag takes over object/action checks for the broader Domain.

    Cookie candidates
    hd_scope: two separate candidates
    Request context
    api.library.outreason.example
    Decision boundary
    Authorization remains separate
  6. The cookie-carriage conclusion was bounded

    The artifact provides only the inclusion result host-only=false; domain-scoped=true. Server session acceptance, resource permission and user action intent cannot be inferred from this matrix.

    Cookie candidates
    host-only=false; domain-scoped=true
    Request context
    api.library.outreason.example
    Decision boundary
    Inclusion evidence only

Path boundary

  1. Candidate configurations were separated

    host-only and domain-scoped are not two concurrent cookies with the same name. The artifact compares alternative configurations; both use Path=/books, Secure and HttpOnly.

    Cookie candidates
    hd_scope: two separate candidates
    Request context
    Context not selected
    Decision boundary
    No inclusion decision
  2. The request context was selected

    The selected case targets /bookstore. GET, now_s=200 and sameSite=true are fixed conditions; this scene explains eligibility without dispatching a request.

    Cookie candidates
    hd_scope: two separate candidates
    Request context
    /bookstore
    Decision boundary
    No inclusion decision
  3. The matching gate was evaluated

    Path=/books does not match /bookstore at a slash boundary; a shared text prefix alone is insufficient for path matching.

    Cookie candidates
    host-only=false; domain-scoped=false
    Request context
    /bookstore
    Decision boundary
    No inclusion decision
  4. The eligibility result was separated

    Both candidates are excluded for this path. Cookie exclusion does not mean the HTTP request itself cannot be sent.

    Cookie candidates
    host-only=false; domain-scoped=false
    Request context
    /bookstore
    Decision boundary
    slash_path_boundary_not_matched
  5. Flags do not replace permission

    Secure constrains transport eligibility and HttpOnly constrains script access. Path selection does not create an independent security boundary between applications on the same host.

    Cookie candidates
    hd_scope: two separate candidates
    Request context
    /bookstore
    Decision boundary
    Authorization remains separate
  6. The cookie-carriage conclusion was bounded

    The artifact provides only the inclusion result host-only=false; domain-scoped=false. Server session acceptance, resource permission and user action intent cannot be inferred from this matrix.

    Cookie candidates
    host-only=false; domain-scoped=false
    Request context
    /bookstore
    Decision boundary
    Inclusion evidence only

ASSUMPTION · BOUNDARY · CONTROL

Broader scope also broadens the state-sharing boundary

Domain=outreason.example makes the record eligible for multiple hosts. Sharing a preference can be legitimate, but the relevant assumption concerns the trust level of those hosts’ state use. Expanding scope unnecessarily creates additional sharing when host-only would suffice.

Impact depends on the value and the applications involved. A preference and an authenticated handle have different consequences. Narrow scope, appropriate host separation and server-owned authorization belong in one design; Path=/books alone does not secure sub-applications.

Do not substitute one flag for every control

HttpOnly can hide a value from script APIs without establishing who approved a state-changing action in which context. Secure selects eligible transport without restoring authority to a handle the store must reject.

SameSite affects cross-site cookie inclusion, but passing this gate still leaves object/action permission for the server to evaluate. The broken assumption is that safe cookie carriage implies a safe operation. Keeping control types and boundaries separate prevents that misplaced authority.

3. Blue · Secure development & defense

Read every scenario without motion

Lifetime boundary

  1. An excluded case was selected

    Review starts with matrix row lifetime-boundary. Both candidates are expected to be excluded; no actual browser exclusion record has yet been supplied.

    Matrix record
    case=lifetime-boundary
    Gate review
    Gates not compared
    Evidence conclusion
    No browser observation
  2. The reason field was examined

    With createdAt_s=100 and maxAge_s=1200, expiry is 1300. now_s=1300 reaches that boundary exactly; equality is excluded.

    Matrix record
    case=lifetime-boundary
    Gate review
    max_age_boundary_reached
    Evidence conclusion
    No browser observation
  3. Other gates were kept distinct

    The target is HTTPS at /books/42, so this row’s lifetime reason is not relabelled as a Secure or Path error.

    Matrix record
    case=lifetime-boundary
    Gate review
    Expected exclusion explained
    Evidence conclusion
    No browser observation
  4. The XPath scope was preserved

    The included=false predicate selects 11 excluded decisions in the model. This count spans two configurations and multiple cases; it does not show that 11 actual browser failures occurred.

    Matrix record
    case=lifetime-boundary
    Gate review
    Model total: 11 excluded
    Evidence conclusion
    No browser observation
  5. Actual inclusion evidence was separated

    The matrix reason is an expected model outcome. Without the actual request Cookie field, credentials mode and browser exclusion reason, observed inclusion remains undecided.

    Matrix record
    case=lifetime-boundary
    Gate review
    max_age_boundary_reached
    Evidence conclusion
    Observed inclusion unknown
  6. A benign exclusion conclusion was recorded

    The expected exclusion reason can be explained for this case. Absence does not establish an attack, failed login or server authorization denial; those require their own evidence.

    Matrix record
    case=lifetime-boundary
    Gate review
    Expected result: excluded
    Evidence conclusion
    Browser outcome needs separate evidence

Privacy block

  1. An excluded case was selected

    Review starts with matrix row privacy-blocked-none. Both candidates are expected to be excluded; no actual browser exclusion record has yet been supplied.

    Matrix record
    case=privacy-blocked-none
    Gate review
    Gates not compared
    Evidence conclusion
    No browser observation
  2. The reason field was examined

    This alternative configuration uses SameSite=None, but browserPolicyAllowed=false remains. None does not override a third-party restriction.

    Matrix record
    case=privacy-blocked-none
    Gate review
    none_does_not_override_third_party_blocking
    Evidence conclusion
    No browser observation
  3. Other gates were kept distinct

    The privacy reason is not explained as if Lax applied. The override belongs only to this alternative case; other configurations have not changed.

    Matrix record
    case=privacy-blocked-none
    Gate review
    Expected exclusion explained
    Evidence conclusion
    No browser observation
  4. The XPath scope was preserved

    The included=false predicate selects 11 excluded decisions in the model. This count spans two configurations and multiple cases; it does not show that 11 actual browser failures occurred.

    Matrix record
    case=privacy-blocked-none
    Gate review
    Model total: 11 excluded
    Evidence conclusion
    No browser observation
  5. Actual inclusion evidence was separated

    The matrix reason is an expected model outcome. Without the actual request Cookie field, credentials mode and browser exclusion reason, observed inclusion remains undecided.

    Matrix record
    case=privacy-blocked-none
    Gate review
    none_does_not_override_third_party_blocking
    Evidence conclusion
    Observed inclusion unknown
  6. A benign exclusion conclusion was recorded

    The expected exclusion reason can be explained for this case. Absence does not establish an attack, failed login or server authorization denial; those require their own evidence.

    Matrix record
    case=privacy-blocked-none
    Gate review
    Expected result: excluded
    Evidence conclusion
    Browser outcome needs separate evidence

IMPLEMENTATION · SECURITY CONTROL · VERIFICATION

Observe inclusion one condition at a time

Compare Domain/host-only, Path, expiry and flags in cookie storage with the target URL and request context. If Network omits a cookie, inspect Browser exclusion reasons and method/navigation first. A cookie name or server status alone cannot explain the omission.

Our gate matrix separates hostMatch, pathMatch, secureChannel, lifetimeValid, sameSiteEligible and browserPolicyAllowed. These are teaching-model explanation fields, not standard fields automatically available in application logs. We do not claim to emulate every Browser privacy or partition algorithm.

Simple selection and missing evidence

XPath /cookieDecisions/decision[@included="false"] selects the model’s excluded cases. Expected benign results include host-only subdomain mismatch, path mismatch, an insecure channel and cross-site POST under Lax. Calling the selected rows attacks would be incorrect.

An expected inclusion missing from a real Browser can reflect additional privacy settings, credentials mode or an incomplete trace. Record limited observations such as name/scope class and requestId rather than deriving user or tenant from cookies. Preserve decision reasons without copying sensitive cookie values into general logs.

Validate policy changes together with compatibility

Narrowing scope or changing SameSite can affect login redirects, embedded widgets and subdomain flows. Inventory which flows are cross-site, cross-origin or same-host. Observe both expected inclusion and expected exclusion with a small user group.

Validation cannot stop at a visible Browser cookie: server session validity and resource policy need their own evidence. Keep matrix reasons visible when motion is disabled, and do not use color alone to convey included/excluded.

For a session-credential cookie, omit Domain to select host-only scope when cross-subdomain sharing is unnecessary. Use Secure and HttpOnly in an HTTPS application; choose SameSite explicitly with login callbacks and embedding requirements in mind. Lax and Strict differ for navigation; a required cross-site flow using None also requires Secure, and Browser privacy policy can still block transmission. Do not treat Path as a tenant-authorization boundary or HttpOnly as a flag preventing requests. Verify eligible inclusion and expected exclusion in separate example flows, followed by the server session/resource decision.

NOW APPLY IT TO THE CASE

Which permission does scope eligibility not prove?

host-only and domain-scoped are separate configurations for hd_scope. Review separates scope, expiry and privacy gates from server permission.

Which owner holds the case’s browser data? Explain why presence or deletion of a client value differs from the server-side session outcome.

Open the related case file ↗

READ THE EXAMPLE TOGETHER

Eight request contexts and two cookie scopes

Select a field and examine what it supports and where the evidence ends.

Read the raw artifact and field explanations
{
  "classification": "Separate hypothetical candidate configurations, not concurrent same-name records",
  "cookies": [
    {
      "id": "host-only",
      "name": "hd_scope",
      "setByHost": "library.outreason.example",
      "path": "/books",
      "secure": true,
      "httpOnly": true,
      "sameSite": "Lax",
      "createdAt_s": 100,
      "maxAge_s": 1200,
      "hostOnly": true,
      "domain": "library.outreason.example"
    },
    {
      "id": "domain-scoped",
      "name": "hd_scope",
      "setByHost": "library.outreason.example",
      "path": "/books",
      "secure": true,
      "httpOnly": true,
      "sameSite": "Lax",
      "createdAt_s": 100,
      "maxAge_s": 1200,
      "hostOnly": false,
      "domain": "outreason.example"
    }
  ],
  "cases": [
    {
      "id": "same-host",
      "target": "https://library.outreason.example/books/42",
      "method": "GET",
      "sameSite": true,
      "topLevelNavigation": true,
      "now_s": 200,
      "expected": {
        "host-only": true,
        "domain-scoped": true
      },
      "reason": "all_selected_gates_pass"
    },
    {
      "id": "subdomain",
      "target": "https://api.library.outreason.example/books/42",
      "method": "GET",
      "sameSite": true,
      "topLevelNavigation": true,
      "now_s": 200,
      "expected": {
        "host-only": false,
        "domain-scoped": true
      },
      "reason": "host_only_does_not_match_subdomain"
    },
    {
      "id": "path-boundary",
      "target": "https://library.outreason.example/bookstore",
      "method": "GET",
      "sameSite": true,
      "topLevelNavigation": true,
      "now_s": 200,
      "expected": {
        "host-only": false,
        "domain-scoped": false
      },
      "reason": "slash_path_boundary_not_matched"
    },
    {
      "id": "insecure",
      "target": "http://library.outreason.example/books/42",
      "method": "GET",
      "sameSite": true,
      "topLevelNavigation": true,
      "now_s": 200,
      "expected": {
        "host-only": false,
        "domain-scoped": false
      },
      "reason": "secure_cookie_requires_secure_channel"
    },
    {
      "id": "cross-site-navigation",
      "target": "https://library.outreason.example/books/42",
      "method": "GET",
      "sameSite": false,
      "topLevelNavigation": true,
      "now_s": 200,
      "expected": {
        "host-only": true,
        "domain-scoped": true
      },
      "reason": "explicit_lax_top_level_safe_navigation"
    },
    {
      "id": "cross-site-background",
      "target": "https://library.outreason.example/books/42",
      "method": "POST",
      "sameSite": false,
      "topLevelNavigation": false,
      "now_s": 200,
      "expected": {
        "host-only": false,
        "domain-scoped": false
      },
      "reason": "explicit_lax_cross_site_background_not_eligible"
    },
    {
      "id": "lifetime-boundary",
      "target": "https://library.outreason.example/books/42",
      "method": "GET",
      "sameSite": true,
      "topLevelNavigation": true,
      "now_s": 1300,
      "expected": {
        "host-only": false,
        "domain-scoped": false
      },
      "reason": "max_age_boundary_reached"
    },
    {
      "id": "privacy-blocked-none",
      "target": "https://library.outreason.example/books/42",
      "method": "GET",
      "sameSite": false,
      "topLevelNavigation": false,
      "now_s": 200,
      "cookieOverrides": {
        "sameSite": "None"
      },
      "browserPolicyAllowed": false,
      "expected": {
        "host-only": false,
        "domain-scoped": false
      },
      "reason": "none_does_not_override_third_party_blocking"
    }
  ],
  "assumptions": [
    "Explicit Lax, HTTPS except labelled insecure case, ordinary web context without localhost exception.",
    "Third-party policy allows inclusion unless explicitly blocked; cookies already stored.",
    "No redirect-chain, partition-key, Browser-specific default-Lax exception or prefix parser implementation.",
    "None override is an alternative configuration for one labelled case, not a dynamic header modification."
  ],
  "decisionXML": "<cookieDecisions><decision case=\"same-host\" cookie=\"host-only\" included=\"true\"/><decision case=\"same-host\" cookie=\"domain-scoped\" included=\"true\"/><decision case=\"subdomain\" cookie=\"host-only\" included=\"false\"/><decision case=\"subdomain\" cookie=\"domain-scoped\" included=\"true\"/><decision case=\"path-boundary\" cookie=\"host-only\" included=\"false\"/><decision case=\"path-boundary\" cookie=\"domain-scoped\" included=\"false\"/><decision case=\"insecure\" cookie=\"host-only\" included=\"false\"/><decision case=\"insecure\" cookie=\"domain-scoped\" included=\"false\"/><decision case=\"cross-site-navigation\" cookie=\"host-only\" included=\"true\"/><decision case=\"cross-site-navigation\" cookie=\"domain-scoped\" included=\"true\"/><decision case=\"cross-site-background\" cookie=\"host-only\" included=\"false\"/><decision case=\"cross-site-background\" cookie=\"domain-scoped\" included=\"false\"/><decision case=\"lifetime-boundary\" cookie=\"host-only\" included=\"false\"/><decision case=\"lifetime-boundary\" cookie=\"domain-scoped\" included=\"false\"/><decision case=\"privacy-blocked-none\" cookie=\"host-only\" included=\"false\"/><decision case=\"privacy-blocked-none\" cookie=\"domain-scoped\" included=\"false\"/></cookieDecisions>",
  "localXPath": "/cookieDecisions/decision[@included=\"false\"]",
  "expectedExcludedDecisions": 11
}
hostOnly / domain
Only the setter host versus domain-plus-subdomain eligibility.
path
Request-path filtering with slash boundaries, not security isolation.
createdAt_s / maxAge_s / now_s
Explicit Browser-lifetime calculation, not a server session timeout.
secure / httpOnly
Separate transport and script access; HttpOnly does not automatically block inclusion.
sameSite / topLevelNavigation / method
Context for explicit-Lax inclusion. sameSite is supplied input, not a PSL algorithm output.
browserPolicyAllowed
Selected third-party privacy gate, not overridden by None.
expected / decisionXML
Benign include/exclude outcomes and the inert local-XPath schema.

The matrix is not a complete Browser. Cookie records are alternative configurations rather than a capture. It explains Path, Secure, lifetime, explicit Lax and a supplied privacy gate; redirects, CORS response access, partitioning and storage acceptance remain outside this scope.

Two reality checks

Cookie Path=/books securely isolates state from /admin on the same host.

Path filters request transmission; it is not dependable same-host isolation or a substitute for server authorization.

SameSite=None; Secure guarantees transmission on every third-party request.

None affects the SameSite gate only. Browser privacy/partition policy, scope, lifetime and credentials conditions still apply.

YOUR TURN

Work through this story.

Predict the outcome, find the evidence boundary, and explain it in your own words.

Is a Path=/books cookie eligible for /bookstore?

  1. No; the selected slash path boundary does not match.
  2. Yes; starting the path string with /books is sufficient.
Read the explained answer

No; the selected slash path boundary does not match. — The paths share a string prefix, but there is no slash after /books; expected inclusion is false.

Why is only the domain-scoped candidate eligible for the subdomain request?

Selected lesson artifact fields; teaching example

cookies[0].hostOnly
true
cookies[1].domain
outreason.example
cases[1]
{"id":"subdomain","target":"https://api.library.outreason.example/books/42","method":"GET","sameSite":true,"topLevelNavigation":true,"now_s":200,"expected":{"host-only":false,"domain-scoped":true},"reason":"host_only_does_not_match_subdomain"}
  1. HttpOnly expands subdomain scope for every candidate.
  2. Host-only requires the exact host; the domain-scoped candidate includes the selected subdomain.
Read the explained answer

Host-only requires the exact host; the domain-scoped candidate includes the selected subdomain. — api.library.outreason.example is not host-only library.outreason.example; domain outreason.example matches.

Why is the alternative SameSite=None+Secure configuration still withheld in the privacy-blocked branch? Do Secure/HttpOnly authorize the user?

Read the explained answer

Selecting None does not override third-party privacy policy; browserPolicyAllowed=false closes inclusion. Secure is a channel condition, while HttpOnly limits script exposure. Sending a Cookie does not prove a valid server session or allowed resource permission; those checks remain separate.

□ I did not treat None as a browser-privacy override.

□ I did not count Cookie flags as server authorization.

Open the application console · request / response / browser
Also open request, URL, cookie and DOM examples

Sources and scope