Observe a bounded HTTP request

Compare a request's method, bounded content size, and safely normalized field values.

  • messages
  • methods
  • request content
  • fields

Prediction

Changing the method or adding fixed request content should change the normalized request description. A HEAD response should carry metadata without content.

Controlled observation

Choose a GET with Accept, a POST with a fixed text representation, or HEAD. The Worker reports only the method, UTF-8 content byte count, and a small allowlist of normalized field values.

Explanation

An HTTP message combines control data, fields, and optional content. This echo is intentionally incomplete: it demonstrates those parts without reflecting credentials, arbitrary fields, raw binary data, or visitor-selected content.

Controlled exercise

Run this observation

Compare the method, bounded body size, and allowlisted request fields the Worker received.

Ready. No request has run.

Controlled request

Method
GET
URL
https://lab.httpclarity.com/v1/anything
Permitted headers
Accept: application/json
Body
None

Browser-observed response

No live response yet. The representative static example remains useful without JavaScript or the Worker.

Static response example

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
X-Lab-Scenario: anything

{"request":{"bodyBytes":0,"headers":{"accept":"application/json"},"method":"GET"},"scenario":"anything"}

Timing is browser elapsed time. Fetch hides Set-Cookie, raw wire bytes, reliable compressed size, and some redirect details.

Portable examples

cURL
'curl' '--include' '--request' 'GET' '--header' 'Accept: application/json' 'https://lab.httpclarity.com/v1/anything'
Scroll horizontally to read any long lines.
Fetch API
const response = await fetch("https://lab.httpclarity.com/v1/anything", {
  "method": "GET",
  "headers": {
    "Accept": "application/json"
  }
});
console.log(response.status, await response.text());
Scroll horizontally to read any long lines.
PHP
<?php
$options = ['http' => [
    'method' => 'GET',
    'ignore_errors' => true,
    'header' => 'Accept: application/json',
]];
$context = stream_context_create($options);
$body = file_get_contents('https://lab.httpclarity.com/v1/anything', false, $context);
var_dump($http_response_header, $body);
Scroll horizontally to read any long lines.

Need a full API client? Copy the generated cURL command, then import it in Hoppscotch. HTTPClarity sends no request data to Hoppscotch.

Continue in Hoppscotch (opens in a new tab)

Primary sources