From 20c6b15c4c8d064b01959d6b85f6069b88383751 Mon Sep 17 00:00:00 2001 From: sandstrom Date: Wed, 17 Aug 2022 20:22:18 +0200 Subject: [PATCH 1/4] set response status when POST handler has location param (fixes sveltejs/kit#5976) --- packages/kit/src/runtime/server/page/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/kit/src/runtime/server/page/index.js b/packages/kit/src/runtime/server/page/index.js index 9840a417c660..9a1769bb03b8 100644 --- a/packages/kit/src/runtime/server/page/index.js +++ b/packages/kit/src/runtime/server/page/index.js @@ -77,7 +77,7 @@ export async function render_page(event, route, options, state, resolve_opts) { } if (event.request.method === 'POST' && result?.location) { - return redirect_response(status, result.location); + return redirect_response(303, result.location); } } else { event.setHeaders({ From 715a71a0cb8d0f6aca6770d783bc37f27b2f1e92 Mon Sep 17 00:00:00 2001 From: sandstrom Date: Wed, 17 Aug 2022 20:32:16 +0200 Subject: [PATCH 2/4] added changeset --- .changeset/gentle-news-shout.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/gentle-news-shout.md diff --git a/.changeset/gentle-news-shout.md b/.changeset/gentle-news-shout.md new file mode 100644 index 000000000000..a2906f45c1c2 --- /dev/null +++ b/.changeset/gentle-news-shout.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +fixes #5976 From e4d3c4ca02c34577511948045a109ae9a48fc96f Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 17 Aug 2022 15:26:57 -0400 Subject: [PATCH 3/4] add a test --- .../routes/shadowed/post-success-redirect/+page.server.js | 5 +++++ .../src/routes/shadowed/post-success-redirect/+page.svelte | 3 +++ .../shadowed/post-success-redirect/redirected/+page.svelte | 1 + packages/kit/test/apps/basics/test/test.js | 6 ++++++ 4 files changed, 15 insertions(+) create mode 100644 packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/+page.server.js create mode 100644 packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/+page.svelte create mode 100644 packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/redirected/+page.svelte diff --git a/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/+page.server.js b/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/+page.server.js new file mode 100644 index 000000000000..30d0b0e3fb87 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/+page.server.js @@ -0,0 +1,5 @@ +export function POST() { + return { + location: '/shadowed/post-success-redirect/redirected' + }; +} diff --git a/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/+page.svelte b/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/+page.svelte new file mode 100644 index 000000000000..74dca32e8ce8 --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/+page.svelte @@ -0,0 +1,3 @@ +
+ +
diff --git a/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/redirected/+page.svelte b/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/redirected/+page.svelte new file mode 100644 index 000000000000..6ba792f15efc --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/shadowed/post-success-redirect/redirected/+page.svelte @@ -0,0 +1 @@ +

POST was successful

diff --git a/packages/kit/test/apps/basics/test/test.js b/packages/kit/test/apps/basics/test/test.js index d03fa9600539..e54c9ec4905c 100644 --- a/packages/kit/test/apps/basics/test/test.js +++ b/packages/kit/test/apps/basics/test/test.js @@ -188,6 +188,12 @@ test.describe('Shadowed pages', () => { ); }); + test('Handles POST success with returned location', async ({ page }) => { + await page.goto('/shadowed/post-success-redirect'); + await Promise.all([page.waitForNavigation(), page.click('button')]); + expect(await page.textContent('h1')).toBe('POST was successful'); + }); + test('Renders error page for 4xx and 5xx responses from GET', async ({ page, clicknav }) => { await page.goto('/shadowed'); await clicknav('[href="/shadowed/error-get"]'); From e9e311715f49b8e417b49ee42c49d2ad55aa97a5 Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Wed, 17 Aug 2022 15:27:45 -0400 Subject: [PATCH 4/4] Update .changeset/gentle-news-shout.md --- .changeset/gentle-news-shout.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/gentle-news-shout.md b/.changeset/gentle-news-shout.md index a2906f45c1c2..c5a3bcfda283 100644 --- a/.changeset/gentle-news-shout.md +++ b/.changeset/gentle-news-shout.md @@ -2,4 +2,4 @@ '@sveltejs/kit': patch --- -fixes #5976 +Return a 303 response when a `POST` handler provides a `location`