✳ The reference desk / In practice

HTTP

The application protocol that names methods, paths, headers, and bodies for web requests.

Hypertext Transfer Protocol

What it means

HTTP defines the meaning of web requests and responses. A request names a method, such as GET or POST, and a target resource. Headers carry additional information, and a body may carry submitted data. The server returns a status code, headers, and sometimes a body. These pieces help practitioners understand what a browser or application actually asked a service to do.

HTTP semantics are separate from transport protection. HTTPS carries HTTP over a protected connection. Encryption does not decide which records a requester may see. That decision belongs to the application, which must validate permissions and handle inputs appropriately for every relevant request.

See the idea / Networks

The response returns to the requester.

Read a method and target, the service’s permission decision, and the status and body that arrive back at the browser.

Fictional PermitDesk over HTTPS. Resident R17 owns PD17; R29 owns private PD29. Policy permits reading only one’s own permits. A valid R17 session and protected transport are assumed. All data is synthetic.

HTTP: Read a method and target, the service’s permission decision, and the status and body that arrive back at the browser. The chapter text below describes every state.Resident browserGET /permits/PD17Signed in · resident R17Status:No responseBody:None receivedHTTPS assumedPermitDesk serviceSession maps to resident R17Receipt:WaitingPermission:Not reachedStored permits · originalsPD17 → R17 · PD29 → R29GET · TARGET PD17

01 / 04

Compose

The browser asks PermitDesk to read PD17 with GET /permits/PD17. Resident R17 is already signed in; the server’s records associate this permit with R17.

More about this step

This synthetic HTTPS exchange assumes working transport and a valid server-managed R17 session. GET requests a representation, not a permit update. Headers carry the session context, but no session secret is displayed. The labels describe HTTP meaning, not a literal wire capture.

Keep in mindThis is one GET exchange with two authored outcomes. It does not establish every HTTP encoding, status, transport version, or business result. Application permission is separate from HTTPS protection.

Read the visual, step by step

Own permit · PD17

  1. Compose. The browser asks PermitDesk to read PD17 with GET /permits/PD17. Resident R17 is already signed in; the server’s records associate this permit with R17. This synthetic HTTPS exchange assumes working transport and a valid server-managed R17 session. GET requests a representation, not a permit update. Headers carry the session context, but no session secret is displayed. The labels describe HTTP meaning, not a literal wire capture.
  2. Request. The browser sends the request to PermitDesk. Service receipt appears after arrival. Neither an HTTP response nor permit content has reached the browser yet. The request identifies its method and target resource and includes relevant headers. This example sends no request body. The original permits stay stored at the application; the client’s choice does not change authoritative ownership.
  3. Handle. PermitDesk checks R17’s valid session and its own permit-ownership records. PD17 belongs to R17, so its own-permit policy allows this read and prepares a 200 OK representation. The application enforces permission before releasing content. HTTPS and valid syntax do not supply that decision. A status prepared at the server has not reached the browser. The valid R17 session maps to PD17’s owner, so this read is allowed; that permission does not approve the permit or complete a business workflow.
  4. Response. The 200 response travels back to the browser. After arrival, it shows 200 OK and the synthetic PD17 representation. The original permit remains at the application. The authored response has status 200, Content-Type application/json, and the complete short body {"permit":"PD17"}. Its receipt means this representation arrived, not that a permit was approved or a business workflow completed. HTTP responses can use other statuses and bodies.

Other account · PD29

  1. Compose. The browser asks PermitDesk to read PD29 with GET /permits/PD29. Resident R17 is already signed in; the server’s records associate this permit with R29. This synthetic HTTPS exchange assumes working transport and a valid server-managed R17 session. GET requests a representation, not a permit update. Headers carry the session context, but no session secret is displayed. The labels describe HTTP meaning, not a literal wire capture.
  2. Request. The browser sends the request to PermitDesk. Service receipt appears after arrival. Neither an HTTP response nor permit content has reached the browser yet. The request identifies its method and target resource and includes relevant headers. This example sends no request body. The original permits stay stored at the application; the client’s choice does not change authoritative ownership.
  3. Handle. PermitDesk checks R17’s valid session and its own permit-ownership records. PD29 belongs to R29, so its own-permit policy refuses this read and prepares 403 Forbidden without permit content. The application enforces permission before releasing content. HTTPS and valid syntax do not supply that decision. A status prepared at the server has not reached the browser. The refusal preserves the working session and transport; 403 is the chosen policy response here, not a sign-in failure.
  4. Response. The 403 response travels back to the browser. After arrival, it shows 403 Forbidden and no permit data. R17 remains signed in; the other account’s permit is retained at the application. This authored 403 response has headers and no response content. HTTP permits refusal content, but none is included here. The code means this request was refused; it does not invalidate R17’s session or prove a transport failure.

This is one GET exchange with two authored outcomes. It does not establish every HTTP encoding, status, transport version, or business result. Application permission is separate from HTTPS protection.

Flow references: RFC 9110 - requests, GET, 200, and 403 · OWASP - server-side permission on every request

AN ILLUSTRATIVE SCENARIO

A council permit portal

A council portal lets residents view building permit applications. A browser sends a request for one permit, and the server returns its details. During an authorized test, the team changes the requested permit identifier using two test accounts. Even though both users signed in successfully and use HTTPS, the server must reject access to a private permit owned by the other account. Inspecting the request and response helps separate a transport problem from an application permission failure.

Put it to work

  1. Use browser developer tools in an authorized test environment to identify the method, path, status code, and relevant headers for one action.
  2. Map the request to its intended business behavior and permission check, including which account and resource it concerns.
  3. Test valid and invalid requests with synthetic data; confirm server-side rejection rather than relying on a hidden button in the interface.
Inspect a public HTTP response without requesting the page body (requires curl). TLS verification stays enabled.
curl --head https://example.com/

How to check your work

For the same test resource, capture an allowed request and a denied request. The result should match the documented permission rule, and logs should support investigation without recording sensitive credentials.

Connect the ideas

  • TLS

    A protocol that encrypts and integrity-protects an application conversation and checks a certificate for a name.

  • Authorization

    The decision about whether a person, device, workload, or anonymous requester may perform a particular action on a resource.

  • Session

    State linking multiple requests; an authenticated session associates later requests with a previously authenticated identity until it expires or is revoked.

  • Log

    A record emitted by a system that something happened, which may later be used as evidence.

Explore a field lesson

Find your next idea.

Tip: press / to open search. Escape closes this window.