Skip to content

fix: fetch body - #9801

Merged
Rich-Harris merged 6 commits into
sveltejs:masterfrom
PeytonHanel:fix-fetch-body
May 4, 2023
Merged

fix: fetch body#9801
Rich-Harris merged 6 commits into
sveltejs:masterfrom
PeytonHanel:fix-fetch-body

Conversation

@PeytonHanel

Copy link
Copy Markdown
Contributor

fix: Provided fetch function accepts the same object types in the body as the native fetch function

See #9420

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

  • It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
  • This message body should clearly illustrate what problems it solves.
  • Ideally, include a test that fails without this PR but passes with it.

Tests

  • Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

  • If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch. Please prefix changeset messages with feat:, fix:, or chore:.

@changeset-bot

changeset-bot Bot commented Apr 28, 2023

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: c788235

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@sveltejs/kit Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@PeytonHanel

Copy link
Copy Markdown
Contributor Author

I'm not sure why it says no changeset found, I generated one and it's in the files changed section.

@Conduitry

Copy link
Copy Markdown
Member

The changeset needs to be created from the root of the repo. It looks like you initialized another changesets installation within the packages/kit directory.

@PeytonHanel PeytonHanel changed the title Fix fetch body fix: fetch body Apr 28, 2023
Comment thread .changeset/thick-gorillas-judge.md Outdated
@Rich-Harris

Copy link
Copy Markdown
Member

For posterity: it looks like the reason this is okay is that we just don't serialize fetch responses in the case where request.body exists and isn't a string:

if (!body || typeof body === 'string') {

Co-authored-by: Tee Ming <chewteeming01@gmail.com>
@Rich-Harris

Copy link
Copy Markdown
Member

thank you!

@github-actions github-actions Bot mentioned this pull request May 4, 2023
Rich-Harris pushed a commit that referenced this pull request Jul 28, 2026
… is not a string or TypedArray (#16501)

A universal load `fetch` with a `URLSearchParams`, `FormData` or `Blob`
body crashes SSR with `TypeError: value must be a string or TypedArray`
when the response would be inlined. #1385 guarded serialization on the
request body being a string, #6565 re-pointed the check at the response
body, and #9801 removed the throw that had been masking the loss. This
restores the guard. The response isn't serialized and the browser
repeats the fetch.

The client lookup gets the same rule. It hashed only the headers when it
couldn't hash the body, so during hydration such a fetch could resolve
with a different same-url request's serialized response instead of being
sent.

Both tests fail on the base branch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants