The toy Accept choice stays narrow.

highlighted = computed this step

What this toy model checks

The trust boundary parses one GET request, compares one Accept value with two pinned variants, and validates one response.

recompute Accept choice\text{recompute Accept choice}
Accept honesty boundaryThe selected response and body-length check are recomputed from pinned request and response bytes.Accept honesty boundary - GET /item selects application/json, body 14 bytessectionnamevaluecheckrequest linemethodGETparsedrequest linepath/itemparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactheaderAcceptapplication/jsonrequested typevariant 1typetext/htmlcandidatevariant 1body displayHTML paragraph catsafe display formvariant 1body hex3c703e6361743c2f703epinned bytesvariant 1body bytes10countedvariant 1matchnoAccept comparevariant 2typeapplication/jsoncandidatevariant 2body displayJSON name catsafe display formvariant 2body hex7b226e616d65223a22636174227dpinned bytesvariant 2body bytes14countedvariant 2matchyesAccept comparestatusversionHTTP/1.1parsedstatusstatus200 OKokheaderContent-Typeapplication/jsonselectedheaderContent-Length14declared bytesbodydisplay wordsJSON name catsafe display formbodyexact hex7b226e616d65223a22636174227dpinned bytescheckAcceptapplication/jsonrequestcheckselected typeapplication/jsonresponsecheckbody bytes14sentcheckmatchyessame type

Honesty boundary

NOTE: toy HTTP Accept negotiation only; not q-values, wildcards, multiple Accept ranges, language negotiation, compression, caching, Vary behavior, media type parameters, redirects, auth, frameworks, HTTP/2 or HTTP/3, or production server config.

toy Accept only\text{toy Accept only}
Accept honesty boundaryThe selected response and body-length check are recomputed from pinned request and response bytes.Accept honesty boundary - GET /item selects application/json, body 14 bytessectionnamevaluecheckrequest linemethodGETparsedrequest linepath/itemparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactheaderAcceptapplication/jsonrequested typevariant 1typetext/htmlcandidatevariant 1body displayHTML paragraph catsafe display formvariant 1body hex3c703e6361743c2f703epinned bytesvariant 1body bytes10countedvariant 1matchnoAccept comparevariant 2typeapplication/jsoncandidatevariant 2body displayJSON name catsafe display formvariant 2body hex7b226e616d65223a22636174227dpinned bytesvariant 2body bytes14countedvariant 2matchyesAccept comparestatusversionHTTP/1.1parsedstatusstatus200 OKokheaderContent-Typeapplication/jsonselectedheaderContent-Length14declared bytesbodydisplay wordsJSON name catsafe display formbodyexact hex7b226e616d65223a22636174227dpinned bytescheckAcceptapplication/jsonrequestcheckselected typeapplication/jsonresponsecheckbody bytes14sentcheckmatchyessame type

No client compute

The page shows already validated rows. It does not negotiate formats in browser code.

static validated rows\text{static validated rows}
Accept honesty boundaryThe selected response and body-length check are recomputed from pinned request and response bytes.Accept honesty boundary - GET /item selects application/json, body 14 bytessectionnamevaluecheckrequest linemethodGETparsedrequest linepath/itemparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactheaderAcceptapplication/jsonrequested typevariant 1typetext/htmlcandidatevariant 1body displayHTML paragraph catsafe display formvariant 1body hex3c703e6361743c2f703epinned bytesvariant 1body bytes10countedvariant 1matchnoAccept comparevariant 2typeapplication/jsoncandidatevariant 2body displayJSON name catsafe display formvariant 2body hex7b226e616d65223a22636174227dpinned bytesvariant 2body bytes14countedvariant 2matchyesAccept comparestatusversionHTTP/1.1parsedstatusstatus200 OKokheaderContent-Typeapplication/jsonselectedheaderContent-Length14declared bytesbodydisplay wordsJSON name catsafe display formbodyexact hex7b226e616d65223a22636174227dpinned bytescheckAcceptapplication/jsonrequestcheckselected typeapplication/jsonresponsecheckbody bytes14sentcheckmatchyessame type

Summary

Accept can ask for JSON, and the toy server can choose the matching response body.

Accept picks JSON\text{Accept picks JSON}
Accept honesty boundaryThe selected response and body-length check are recomputed from pinned request and response bytes.Accept honesty boundary - GET /item selects application/json, body 14 bytessectionnamevaluecheckrequest linemethodGETparsedrequest linepath/itemparsedrequest lineversionHTTP/1.1parsedheaderHostapi.exampleexactheaderAcceptapplication/jsonrequested typevariant 1typetext/htmlcandidatevariant 1body displayHTML paragraph catsafe display formvariant 1body hex3c703e6361743c2f703epinned bytesvariant 1body bytes10countedvariant 1matchnoAccept comparevariant 2typeapplication/jsoncandidatevariant 2body displayJSON name catsafe display formvariant 2body hex7b226e616d65223a22636174227dpinned bytesvariant 2body bytes14countedvariant 2matchyesAccept comparestatusversionHTTP/1.1parsedstatusstatus200 OKokheaderContent-Typeapplication/jsonselectedheaderContent-Length14declared bytesbodydisplay wordsJSON name catsafe display formbodyexact hex7b226e616d65223a22636174227dpinned bytescheckAcceptapplication/jsonrequestcheckselected typeapplication/jsonresponsecheckbody bytes14sentcheckmatchyessame type