Limitations of Opaque Responses
Despite being part of the Fetch API, opaque responses have certain limitations that affect their usage. Here are some key restrictions:
Accessing Headers and Body
Opaque responses lack access to important properties like headers or the methods of the Body interface (e.g., json() or text()). This opaque nature prevents the retrieval of meaningful information from these responses.
Resource Usage on Pages
Opaque responses can serve as resources on a page in scenarios where the browser permits non-CORS cross-origin resources. However, they are not valid for all resource types, such as fonts. To determine the validity of opaque responses for a specific resource, consult the relevant specification.
Interaction with Cache Storage API
An unexpected limitation arises when using opaque responses with the Cache Storage API. Due to the lack of a meaningful status code, opaque responses (which always have a status of 0) can trigger errors when added to the cache using add() or addAll() methods.
To overcome this issue, explicitly perform a fetch() operation and use the put() method to store the opaque response, acknowledging the potential risks associated with caching error responses.
navigator.storage API
Opaque responses also introduce complications with the navigator.storage API. Browsers add significant padding to calculate storage quota limits and usage for opaque responses. In Google Chrome, for instance, the minimum contribution of a cached opaque response to overall storage usage is approximately 7 megabytes. This factor should be considered when caching opaque responses to avoid exceeding quota limitations prematurely.
The above is the detailed content of What Are the Limitations of Opaque Responses in the Fetch API?. For more information, please follow other related articles on the PHP Chinese website!