moz-cached-ohttp Protocol
The moz-cached-ohttp://
protocol handler enables Firefox to load resources over Oblivious HTTP (OHTTP)
from privileged contexts, including in the privileged about content process. This mechanism provides
privacy-preserving resource loading, and was originally designed for loading images in about:newtab.
Overview
The moz-cached-ohttp protocol implements a cache-first strategy that:
First attempts to load resources from the HTTP cache to minimize OHTTP requests
Falls back to loading via OHTTP when resources are not available in cache
Automatically caches OHTTP responses for future requests
Respects HTTP cache expiration headers for proper cache management, but otherwise defaults to 24 hours for the cache expiry.
Supported Contexts
The protocol is restricted to specific contexts for security:
Privileged about content process: Primary use case is for privacy-preserving image loading on about:newtab
System principals in parent process: For tests and internal usage
URL Format
The protocol uses a specific URL format to encode the target resource URL:
moz-cached-ohttp://newtab-image/?url=<encoded-url>
Where <encoded-url>
is the URL-encoded target HTTPS-only image URL.
Note
Only the newtab-image
host is currently supported. The host determines which OHTTP configuration and relay will be used for the request. See HOST_MAP
in MozCachedOHTTPProtocolHandler.sys.mjs
.
Warning
Only HTTPS target URLs are supported for security. HTTP URLs will be rejected.
Example:
moz-cached-ohttp://newtab-image/?url=https%3A%2F%2Fexample.com%2Fimage.jpg
Note
The OHTTP Relay and Gateway must both be configured to enable requests. The OHTTP Gateway also needs to have an allowlist that includes the resource endpoint, otherwise requests are likely to return 403 Forbidden
responses.
Host-Based Configuration
The protocol uses a host-based configuration system that maps URL hosts to specific OHTTP settings. This design allows different types of resource requests to use different OHTTP configurations in the future.
Currently Supported Hosts
newtab-image: Used for New Tab page image loading
Gateway Config URL preference:
browser.newtabpage.activity-stream.discoverystream.ohttp.configURL
Relay URL preference:
browser.newtabpage.activity-stream.discoverystream.ohttp.relayURL
Future Extensibility
The host-based design allows easy addition of new hosts with different OHTTP configurations:
// Future hosts could be added like:
// moz-cached-ohttp://other-service/?url=<encoded-url>
// moz-cached-ohttp://ads-service/?url=<encoded-url>
Each host would map to its own set of configuration preferences, allowing different services to use different OHTTP infrastructure.