feat(server): add trustProxy option for X-Forwarded header support
#21282
+86
−4
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
When running Vite's dev server behind a reverse proxy (nginx, Caddy, etc.), the host validation middleware rejects requests because it validates against the proxy's internal hostname rather than the original client request host.
This PR adds a
server.trustProxyoption that, when enabled, extracts the original host fromX-Forwarded-Hostor RFC 7239Forwardedheaders for host validation.Changes
trustProxytoCommonServerOptions(defaults tofalsefor security)getEffectiveHost()utility in newforwardedHeaders.tsmodulehostValidationMiddlewareto use forwarded host whentrustProxyis enabledtrustProxyfrom server configUsage
Security Considerations
falseby default)What is the purpose of this pull request?
Additional context: This addresses a common deployment scenario where Vite runs behind a reverse proxy and DNS rebinding protection (introduced in recent versions) blocks legitimate requests because the
Hostheader contains the internal proxy hostname rather than the public-facing hostname.