41d4aa04c4
When a user tried to have the following Edge Function: ```ts export default () => fetch("https://example.vercel.sh"); ``` The Edge Function were failing. Why is that? When `fetch` was called, an implicit `Accept-Encoding` header was added to allow the origin to return a compressed response. Then, the origin will set the `Content-Encoding` header in the response, to let the client know that the body needs to be decompressed in order to be read. That creates an issue though: `response.body` will be a `ReadableStream<Uint8Array>`, or, a stream that contains binary data that decodes into _the uncompressed data_ (or, plain text!). What it means, is that `response.body` is uncompressed data, while `response.headers.get('content-encoding')` is marking the response body as compressed payload. This confuses the HTTP clients and makes them fail. This commit removes the `content-encoding`, `transfer-encoding` and `content-length` headers from the response, as the Next.js server _always_ streams Edge Function responses. ## Bug - [ ] Related issues linked using `fixes #number` - [x] Integration tests added - [ ] Errors have helpful link attached, see `contributing.md` |
||
---|---|---|
.. | ||
app | ||
index.test.ts |