You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
HttpTransferCache collapses distinct binary POST bodies into the same cache key #70226
Which @angular/* package(s) are the source of the bug?
common / http
Is this a regression?
No
Description
With POST requests enabled in HttpTransferCache, two requests with different binary bodies can end up sharing one cache entry. This matters for valid POST-based APIs such as Protobuf and gRPC, where the request body carries the input. The same cache-key rule also applies to other POST APIs, including GraphQL requests.
I reproduced this with two read-only Protobuf requests to the same URL. The bodies are valid, but different:
document 100: 0864 document 200: 08c801
Angular should treat these as separate requests and cache their responses separately. Instead, the request for document 200 gets the cached response for document 100; it never reaches the origin.
HttpRequest.serializeBody() returns a Blob as-is. Because a Blob is not a string, makeCacheKey() turns it into ''. That means both Protobuf payloads have the same cache-key input before hashing.
Please provide a link to a minimal reproduction of the bug
Activity
fix(http): distinguish binary transfer cache request bodies
fix(http): distinguish binary transfer cache request bodies
fix(http): distinguish binary transfer cache request bodies
fix(http): distinguish binary transfer cache request bodies
fix(http): distinguish binary transfer cache request bodies
fix(http): distinguish binary transfer cache request bodies
fix(http): distinguish binary transfer cache request bodies
fix(http): distinguish binary transfer cache request bodies