This project demonstrates a weird behavior where initial request headers are forwarded through to external fetch calls when using the svelte-kit node adapter.
You can see this by logging request headers in the externalFetch
hook.
First, run this server locally with yarn run dev
.
Then cURL the request with the Accept header:
curl --header "Accept: text/html" http://localhost:3000
In the development console, you'll see that the Request object for the API URL also includes this header (and any other header that you provide):
External Fetch:
https://www.gov.uk/bank-holidays.json
Accept Header: text/htm
External Fetch:
https://www.gov.uk/bank-holidays.json
Accept Header: image/png
This header matches whatever is sent to the request for HTML when connecting to http://localhost:3000
, even though this is a request for JSON data.
This is unexpected and causes problems for our API interactions. We've hit this in two places:
Accept: image/png
to our API endpoint, which results in our API responding with a 406 Not Acceptable error. This is fine :shrug:, but pretty weird.If-Modified-Since
header, our API returns a 304 Not Modified
response, which raises an error when generating a server response.We'd expect these headers to not get automatically passed through. Those headers are for the SvelteKit request, not our API.