fix(@angular/build): allow non-prefixed requests when using SSR and base href#32137
Merged
alan-agius4 merged 1 commit intoangular:mainfrom Dec 17, 2025
Merged
fix(@angular/build): allow non-prefixed requests when using SSR and base href#32137alan-agius4 merged 1 commit intoangular:mainfrom
alan-agius4 merged 1 commit intoangular:mainfrom
Conversation
…ase href When using SSR with a configured baseHref, the Vite dev server's default base middleware would intercept and reject requests that did not start with the base path. This created a mismatch with production behavior, where such requests (e.g., health check endpoints or custom routes defined in server.ts) could be handled correctly without the base prefix. This change patches the Vite base middleware to allow requests that do not match the base path to proceed, enabling them to be handled by subsequent middlewares like the Angular SSR middleware. Fixes angular#31896
4ea5ba7 to
87a3297
Compare
clydin
reviewed
Dec 17, 2025
Comment on lines
+46
to
+52
| const { pathname, hash, search } = new URL(url, 'http://localhost'); | ||
| if (pathname === '/' || pathname === '/index.html') { | ||
| res.writeHead(302, { Location: `${base}${search}${hash}` }); | ||
| res.end(); | ||
|
|
||
| return; | ||
| } |
Member
There was a problem hiding this comment.
Would the existing fallback middleware handle this case?
Collaborator
Author
There was a problem hiding this comment.
Yes, the existing middleware handle this https://github.com/vitejs/vite/blob/e81c183f8c8ccaf7774ef0d0ee125bf63dbf30b4/packages/vite/src/node/server/middlewares/base.ts#L29-L36
The problem with the existing middleware is anything below https://github.com/vitejs/vite/blob/e81c183f8c8ccaf7774ef0d0ee125bf63dbf30b4/packages/vite/src/node/server/middlewares/base.ts#L38
clydin
approved these changes
Dec 17, 2025
Collaborator
Author
|
This issue has been automatically locked due to inactivity. Read more about our automatic conversation locking policy. This action has been performed automatically by a bot. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
When using SSR with a configured baseHref, the Vite dev server's default base middleware would intercept and reject requests that did not start with the base path. This created a mismatch with production behavior, where such requests (e.g., health check endpoints or custom routes defined in server.ts) could be handled correctly without the base prefix.
This change patches the Vite base middleware to allow requests that do not match the base path to proceed, enabling them to be handled by subsequent middlewares like the Angular SSR middleware.
Fixes #31896