Choose when to send it
02The safe preference can accompany HTTPS requests. A plain HTTP request must not carry it, and privacy choices can also call for omitting it.
For an HTTPS request where the user expressed a desire to avoid fingerprinting or targeting, the user agent SHOULD NOT emit safe. This conditional recommendation differs from the HTTP prohibition.
Source for this drawing: RFC 8674 · Read RFC section 2 ↗
New to this? Start hereA quick picture + helpful background
A message needs an address.
Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
Terms in this drawing
- Scheme
- The http or https part of the URI determines the plain-HTTP emission restriction.
- User agent
- The browser or other HTTP client deciding which request fields to send.
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
Control emission of the preference without confusing it with delivery of the request.
- A user agent MUST NOT emit the safe preference on requests with the http scheme. The illustration still delivers the HTTP request, with the preference omitted.
- Sending on every HTTPS request is typical of the described approach, not mandatory. Finer per-site control is possible; common OS HTTP libraries MAY generate the preference from system configuration.
- A user agent SHOULD NOT include the preference when the user has expressed a desire to avoid fingerprinting or targeting attacks. Some private modes are an example, not a universal MUST for every private mode.
Appendix A suggests a control such as “Request safe content from web sites”, rather than a promise of enforcement. The controls pictured here explain a protocol; they are not settings on Visual RFC. HTTPS hides the field in transit from ordinary passive observers, not from the receiving origin.
Read the RFC section ↗