Adds support for a new HTTP response header, Critical-CH to indicate that if a particular Client Hint header was not received and could have been sent, a new request should be made that includes the particular Client Hint header.
With the current Client Hint spec and implementation, a client hint could be not sent to a server for any one of a few reasons: 1. The client does not support that particular client hint, or client hints in general 2. The client was unaware of the site’s most recent preferences, either because the client has never been to this site or because the preferences have been changed since the last visit 3. The client opts to not send a particular set of client hints for whatever reason Situation 2 can simply be fixed by waiting for the next request or triggering it via a redirect when a hint is not received. However, doing so in situations 1 and 3 would lead to an infinite loop. Fixing this would require adding an inordinate amount of state and extra logic. Instead, it would be better for the developer for this logic to be maintained client-side. The basic algorithm client-side is this: If, after processing the Accept-CH response header, the client would have sent a critical hint (listed in the Critical-CH response header) not sent with the request, it stores the new client hint preferences how it normally would and retries the request. Otherwise, it uses the response as-is.
Status in Chromium
Enabled by default (tracking bug) in:
- Chrome for desktop release 91
- Chrome for Android release 91
Consensus & Standardization
Intent to Prototype urlIntent to Prototype thread
Search tagsClient Hints,
Last updated on 2021-06-13