HTTP headers reference — 60 request and response headers explained

Search 60 common HTTP headers by name or by topic such as cors, cache or cookie, and see whether each is sent by the client, the server or both, with a realistic example line.

Live demo · real result from this tool
Showing60 of 60 headers

Table

HeaderTypePurposeExample
AcceptRequestMedia types the client can handle, with q-values for preference.Accept: application/json, text/html;q=0.9
Accept-EncodingRequestCompression the client supports.Accept-Encoding: gzip, br, zstd
Accept-LanguageRequestPreferred natural languages.Accept-Language: en-GB, en;q=0.8
AuthorizationRequestCredentials for the server (Basic, Bearer, …).Authorization: Bearer <token>
Cache-ControlBothCaching directives for browsers and shared caches.Cache-Control: public, max-age=31536000, immutable
ConnectionBothConnection options (HTTP/1.1 only; forbidden in HTTP/2).Connection: keep-alive
Content-DispositionResponseDisplay inline or download as a named file.Content-Disposition: attachment; filename="report.pdf"
Content-EncodingBothCompression applied to the body.Content-Encoding: br
Content-LanguageResponseLanguage of the content.Content-Language: en
Content-LengthBothBody size in bytes.Content-Length: 348
Content-RangeResponseWhich part of the resource a 206 response contains.Content-Range: bytes 0-1023/146515
Content-Security-PolicyResponseRestricts where scripts, styles and other resources may load from.Content-Security-Policy: default-src 'self'
Content-TypeBothMedia type of the body.Content-Type: application/json; charset=utf-8
CookieRequestCookies previously set by the server.Cookie: session=abc123; theme=dark
Cross-Origin-Embedder-PolicyResponseRequires cross-origin resources to opt in (needed for cross-origin isolation).Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-PolicyResponseIsolates the browsing context from cross-origin windows.Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-PolicyResponseWho may load this resource.Cross-Origin-Resource-Policy: same-site
Access-Control-Allow-OriginResponseCORS: which origin may read the response.Access-Control-Allow-Origin: https://app.example.com
Access-Control-Allow-MethodsResponseCORS preflight: allowed methods.Access-Control-Allow-Methods: GET, POST, PUT
Access-Control-Allow-HeadersResponseCORS preflight: allowed request headers.Access-Control-Allow-Headers: Content-Type, Authorization
Access-Control-Allow-CredentialsResponseCORS: whether cookies/credentials may be included.Access-Control-Allow-Credentials: true
Access-Control-Max-AgeResponseCORS: how long a preflight result may be cached (seconds).Access-Control-Max-Age: 600
Access-Control-Request-MethodRequestCORS preflight: the method the real request will use.Access-Control-Request-Method: PUT
OriginRequestThe origin that initiated the request (CORS, CSRF checks).Origin: https://app.example.com
DateBothWhen the message was generated.Date: Fri, 02 Oct 2026 08:00:00 GMT
ETagResponseA version identifier for the resource (for caching and conditional requests).ETag: "33a64df5"
ExpiresResponseAbsolute expiry time (Cache-Control max-age takes priority).Expires: Wed, 21 Oct 2026 07:28:00 GMT
ForwardedRequestStandard form of the X-Forwarded-* proxy headers.Forwarded: for=192.0.2.60;proto=https
HostRequestHost and port of the target server (required in HTTP/1.1).Host: api.example.com
If-MatchRequestOnly perform the request if the ETag matches (optimistic locking).If-Match: "33a64df5"
If-Modified-SinceRequestReturn 304 if unchanged since this date.If-Modified-Since: Wed, 21 Oct 2026 07:28:00 GMT
If-None-MatchRequestReturn 304 if the ETag still matches.If-None-Match: "33a64df5"
Keep-AliveBothTimeout and maximum requests for a persistent connection.Keep-Alive: timeout=5, max=1000
Last-ModifiedResponseWhen the resource last changed.Last-Modified: Wed, 21 Oct 2026 07:28:00 GMT
LinkResponseTyped links, e.g. preload hints or pagination.Link: </app.css>; rel=preload; as=style
LocationResponseRedirect target, or the URL of a created resource.Location: /orders/42
Permissions-PolicyResponseEnables or disables browser features (camera, geolocation…).Permissions-Policy: camera=(), geolocation=()
RangeRequestAsk for part of a resource.Range: bytes=0-1023
RefererRequestThe page that linked to this request (historically misspelt).Referer: https://example.com/page
Referrer-PolicyResponseHow much referrer information to send.Referrer-Policy: strict-origin-when-cross-origin
Retry-AfterResponseWhen to retry after 429 or 503 (seconds or a date).Retry-After: 120
Sec-Fetch-SiteRequestFetch metadata: relationship between initiator and target.Sec-Fetch-Site: same-origin
Sec-CH-UARequestClient hint: browser brand and major version.Sec-CH-UA: "Chromium";v="130"
ServerResponseServer software (often minimised for security).Server: nginx
Server-TimingResponseServer-side timing metrics, visible in DevTools.Server-Timing: db;dur=53, app;dur=47.2
Set-CookieResponseSets a cookie, with Secure, HttpOnly, SameSite and expiry attributes.Set-Cookie: id=a3fW; Secure; HttpOnly; SameSite=Lax
Strict-Transport-SecurityResponseForces HTTPS for future visits (HSTS).Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Transfer-EncodingBothHow the body is framed in HTTP/1.1 (chunked).Transfer-Encoding: chunked
UpgradeBothSwitch to another protocol on the same connection.Upgrade: websocket
User-AgentRequestIdentifies the client software.User-Agent: Mozilla/5.0 (…)
VaryResponseRequest headers that change the response (cache key).Vary: Accept-Encoding, Accept-Language
ViaBothProxies the message passed through.Via: 1.1 varnish
WWW-AuthenticateResponseHow to authenticate, sent with 401.WWW-Authenticate: Bearer realm="api"
X-Content-Type-OptionsResponsenosniff stops browsers guessing the media type.X-Content-Type-Options: nosniff
X-Frame-OptionsResponseLegacy clickjacking protection (prefer CSP frame-ancestors).X-Frame-Options: DENY
X-Forwarded-ForRequestDe-facto: client IP chain added by proxies.X-Forwarded-For: 203.0.113.195, 70.41.3.18
X-Forwarded-ProtoRequestDe-facto: protocol the client used to reach the proxy.X-Forwarded-Proto: https
X-Request-IDBothDe-facto: correlation ID for tracing a request through services.X-Request-ID: 7f8a2c1e-…
Idempotency-KeyRequestLets a server safely de-duplicate retried POST requests.Idempotency-Key: 8e03978e-40d5-43e8-bc93-6894a57f9324
PreferRequestOptional server behaviours, e.g. return=minimal.Prefer: return=representation

60 rows — scroll inside the table, or download the CSV.

Processed on your device — nothing is uploaded.

How to use the HTTP headers reference

  1. Type in Filter. A header name (etag), a topic (cors, cookie, cache, hsts) or a status code mentioned in the purpose (304, 429) all work. Every word must appear in the row.
  2. Optionally set Type to Request or Response (each includes the two-way headers) or Both (two-way headers only). All is the default.
  3. Read the Purpose and copy the Example line as a starting point for your server config or test request.

What it does and when to use it

It is a short, practical list of the 60 headers you meet most when building or debugging web apps and APIs: 21 request headers, 28 response headers and 11 that travel both ways. Use it when a browser blocks a call with a CORS error, when a response is cached for too long, when a file download needs a filename, or when you set up security headers such as Content-Security-Policy, Strict-Transport-Security and Permissions-Policy.

The examples are realistic values, not just syntax. Cache-Control: public, max-age=31536000, immutable is the usual setting for fingerprinted static files. Content-Disposition: attachment; filename="report.pdf" forces a download.

Status codes have their own HTTP status codes reference, and Content-Type values are listed in MIME types. To turn headers into a request you can run, use the curl command builder.

How it works

The header list loads on first use and is filtered in your browser. Your filter is split into words, and a row stays only if each word appears in its name, type, purpose or example (case-insensitive). The word hsts is matched against the uppercase HSTS in the Strict-Transport-Security row. Nothing is fetched from your site, and nothing you type is sent anywhere.

Worked examples

Filter cors returns Showing: 7 of 60 headers. Six are the Access-Control-* headers, plus Origin, which the browser sends on every cross-origin request.

Filter 304 finds the two conditional request headers that can earn a “304 Not Modified” reply:

If-Modified-Since: Wed, 21 Oct 2026 07:28:00 GMT
If-None-Match: "33a64df5"

Filter hsts returns one row with a two-year policy (63,072,000 seconds):

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Limits and tips

  • Not every header is here. Rare and vendor-specific headers (for example cloud-provider or CDN headers) are not listed, and there is no full list of directives for CSP or Cache-Control.
  • Example values are examples. max-age=31536000 suits files whose name changes when their content changes, but it would keep a normal HTML page stale for a year.
  • Test with preload in mind. The preload flag in HSTS is hard to undo once a domain is on browser preload lists.
  • Connection and Keep-Alive are HTTP/1.1 only. HTTP/2 forbids connection-specific headers, as the table notes.

Frequently asked questions

Does choosing Response include Cache-Control and Content-Type?
Yes. Headers that can appear in both directions are labelled Both, and they are listed under Request and under Response as well. Choose Both to see only Cache-Control, Content-Type, Content-Length and the other two-way headers.
Which headers do I need for a CORS request with cookies?
The server must answer with Access-Control-Allow-Origin set to the exact origin (not *) and Access-Control-Allow-Credentials true. For a preflight it also needs Access-Control-Allow-Methods and, when the request sends custom headers, Access-Control-Allow-Headers.
Are header names case-sensitive?
No. HTTP header names are case-insensitive, and HTTP/2 and HTTP/3 send them in lowercase. The filter here is case-insensitive too.
Is X-Frame-Options still worth sending?
The table marks it as legacy clickjacking protection. Modern browsers follow the frame-ancestors directive of Content-Security-Policy, but many sites send both for older clients.
Does this tool send a request to check my site's headers?
No. It is a static reference that filters a built-in list in your browser. To see your own headers, open the Network tab in DevTools or run curl -I followed by your URL.

Written by the ToolsRift team · Last updated

Pages are drafted with AI assistance and checked by automated tests. How we write and check pages.

Was this tool useful?

Report a problem

Start typing to search every tool.

↑ ↓ to moveEnter to openEsc to close