Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/vite/src/node/server/middlewares/proxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ export function proxyMiddleware(
)
if (!res.headersSent && !res.writableEnded) {
res
.writeHead(500, {
.writeHead(502, {
'Content-Type': 'text/plain',
})
.end()
Expand Down
9 changes: 8 additions & 1 deletion playground/proxy-bypass/__tests__/proxy-bypass.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { expect, test, vi } from 'vitest'
import { browserLogs, page, serverLogs } from '~utils'
import { browserLogs, isServe, page, serverLogs, viteTestUrl } from '~utils'

test('proxy-bypass', async () => {
await vi.waitFor(() => {
Expand All @@ -17,3 +17,10 @@ test('async-proxy-bypass-with-error', async () => {
expect(serverLogs.join('\n')).toContain('bypass error')
})
})

test.runIf(isServe)('proxy error returns 502', async () => {
// proxyError tries to proxy to foo.invalid which doesn't exist
// This should return 502 Bad Gateway instead of 500 Internal Server Error
Comment thread
sapphi-red marked this conversation as resolved.
Outdated
const res = await fetch(viteTestUrl + '/proxyError')
expect(res.status).toBe(502)
})
3 changes: 3 additions & 0 deletions playground/proxy-bypass/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ export default defineConfig({
return false
},
},
'/proxyError': {
target: 'http://foo.invalid',
},
'/asyncResponse': {
bypass: async (_, res) => {
await timeout(4)
Expand Down
Loading