Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix: Infer content type with charset in dev and prod #3841

Merged
merged 6 commits into from
Jul 7, 2022

Conversation

bholmesdev
Copy link
Contributor

@bholmesdev bholmesdev commented Jul 6, 2022

Context and open questions

Discord comment:

Okay, I hit a snag with our UTF-8 issue: after a triage call, we decided we should assign "charset=UTF-8" to the header of all API endpoints (in dev only) that use the { body } shorthand. Unfortunately, you can't assign a charset without also assigning a content type.
We could use text/plain; charset=utf-8, but this wouldn't seem valid .json endpoints. We could also infer application/json for the .json extension specifically, but this is a slippery slope for other content types we'd need to support
So yeah... not sure what behavior we want here 🤷‍♂️
Oh interesting, sveltekit just says text/plain;charset=UTF-8 for any {body} shorthand, even for .json files in production

Changes

Testing

Add content type test to ssr-api-route.test.js

Docs

N/A

@changeset-bot
Copy link

changeset-bot bot commented Jul 6, 2022

🦋 Changeset detected

Latest commit: d0b0ab3

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

This PR includes changesets to release 9 packages
Name Type
astro Patch
@e2e/astro-component Patch
@e2e/lit-component Patch
@e2e/preact-component Patch
@e2e/react-component Patch
@e2e/solid-component Patch
@e2e/svelte-component Patch
@e2e/e2e-tailwindcss Patch
@e2e/ts-resolution 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

@github-actions github-actions bot added the pkg: astro Related to the core `astro` package (scope) label Jul 6, 2022
Copy link
Member

@natemoo-re natemoo-re left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This makes sense to me!

Copy link
Contributor

@tony-sull tony-sull left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep this definitely makes sense, and lines up nicely with the UTF-8 default files get during SSG

@bholmesdev bholmesdev changed the title Fix: Set text/plain;charset=utf-8 default content type in dev server Fix: Infer content type with charset in dev and prod Jul 6, 2022
@bholmesdev bholmesdev merged commit 820a26d into main Jul 7, 2022
@bholmesdev bholmesdev deleted the fix/server-endpoint-charset branch July 7, 2022 00:48
@astrobot-houston astrobot-houston mentioned this pull request Jul 7, 2022
SiriousHunter pushed a commit to SiriousHunter/astro that referenced this pull request Feb 3, 2023
* fix: add text/plain;charset;utf-8 header in dev

* test: ensure content type for body shorthand

* chore: changeset

* feat: infer content type by pathname

* feat: add charset to prod build handler

* test: update for charset in prod build test
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
pkg: astro Related to the core `astro` package (scope)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

🐛 BUG: Dev server doesn't return UTF-8 compatible responses on non-html-pages
3 participants