From 804a3863e77a72ed1c33a75783586f17dbe03ebf Mon Sep 17 00:00:00 2001 From: Ethan Arrowood Date: Wed, 1 Feb 2023 18:07:08 -0700 Subject: [PATCH] [cli] add charset to content-type headers for `vc dev` (#9364) Adds `charset: utf8` to the `content-type` header --- packages/cli/src/util/dev/mime-type.ts | 4 ++-- packages/cli/src/util/dev/server.ts | 4 ++-- packages/cli/test/dev/integration-1.test.ts | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/util/dev/mime-type.ts b/packages/cli/src/util/dev/mime-type.ts index e430cf294..fbf8a1d93 100644 --- a/packages/cli/src/util/dev/mime-type.ts +++ b/packages/cli/src/util/dev/mime-type.ts @@ -1,5 +1,5 @@ -import { lookup as lookupMimeType } from 'mime-types'; +import { contentType } from 'mime-types'; export default function getMimeType(fileName: string) { - return lookupMimeType(fileName) || 'application/octet-stream'; + return contentType(fileName) || 'application/octet-stream'; } diff --git a/packages/cli/src/util/dev/server.ts b/packages/cli/src/util/dev/server.ts index 2e2409d19..414606186 100644 --- a/packages/cli/src/util/dev/server.ts +++ b/packages/cli/src/util/dev/server.ts @@ -1129,10 +1129,10 @@ export default class DevServer { }); body = `${json}\n`; } else if (accept.includes('html')) { - res.setHeader('content-type', 'text/html'); + res.setHeader('content-type', 'text/html; charset=utf-8'); body = redirectTemplate({ location, statusCode }); } else { - res.setHeader('content-type', 'text/plain'); + res.setHeader('content-type', 'text/plain; charset=utf-8'); body = `Redirecting to ${location} (${statusCode})\n`; } res.end(body); diff --git a/packages/cli/test/dev/integration-1.test.ts b/packages/cli/test/dev/integration-1.test.ts index b81f7cf0a..acc9499ef 100644 --- a/packages/cli/test/dev/integration-1.test.ts +++ b/packages/cli/test/dev/integration-1.test.ts @@ -686,6 +686,7 @@ test('[vercel dev] should support static files with zero config', async () => { expect(body).toEqual('bye:user'); res = await fetch(`http://localhost:${port}/`); + expect(res.headers.get('content-type')).toBe('text/html; charset=utf-8'); body = await res.text(); expect(body.startsWith('

goodbye world

')).toBeTruthy(); } finally {