feat(@angular/ssr): support the standard Forwarded header#33406
Merged
Conversation
ff18569 to
fdb4c43
Compare
There was a problem hiding this comment.
Code Review
This pull request adds support for parsing and validating the standard RFC 7239 Forwarded header in Angular SSR, prioritizing it over standard and x-forwarded-* headers when trusted. The review feedback highlights a critical issue in parseForwardedHeader where splitting the header value by semicolons blindly fails if a quoted parameter value contains a semicolon. The reviewer suggests using a robust regular expression to parse the parameters correctly and adding a corresponding test case to cover this scenario.
This commit adds support for the standard RFC 7239 `Forwarded` header in the Angular SSR request parsing and validation layers. Previously, only non-standard `x-forwarded-*` headers were supported for resolving proxy-forwarded protocols, hosts, and ports. With this change: - A new `parseForwardedHeader` utility is added to parse standard `Forwarded` header parameters (such as `host` and `proto`), correctly handling quoted values and escaped characters. - In `createRequestUrl`, if the `Forwarded` header is trusted (via `trustProxyHeaders` configuration), its `host` and `proto` parameters are extracted and take precedence over corresponding `x-forwarded-host` and `x-forwarded-proto` headers. - Request validation is updated to verify the validity of `Forwarded` host and proto parameters. - Request sanitization is updated to scrub or retain the `Forwarded` header based on the configured trusted proxy headers. Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Forwarded
fdb4c43 to
9b93c32
Compare
dgp1130
approved these changes
Jun 22, 2026
Collaborator
Author
|
This PR was merged into the repository. The changes were merged into the following branches:
|
kirjs
pushed a commit
to angular/angular
that referenced
this pull request
Jun 23, 2026
Update the security guide to document that the Angular SSR request handling pipeline now supports and validates the standard RFC 7239 `Forwarded` header. Previously, only non-standard `X-Forwarded-*` headers were supported for resolving proxy-forwarded protocols, hosts, and ports. With this update: - The standard `Forwarded` header parameters (such as `host` and `proto`) are validated and take precedence over corresponding `X-Forwarded-*` headers when trusted. - The `trustProxyHeaders` option and `NG_TRUST_PROXY_HEADERS` environment variable can be configured to trust the `Forwarded` header. For more details on the implementation, see the corresponding PR: angular/angular-cli#33406
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This commit adds support for the standard RFC 7239
Forwardedheader in the Angular SSR request parsing and validation layers.Previously, only non-standard
x-forwarded-*headers were supported for resolving proxy-forwarded protocols, hosts, and ports. With this change:parseForwardedHeaderutility is added to parse standardForwardedheader parameters (such ashostandproto), correctly handling quoted values and escaped characters.createRequestUrl, if theForwardedheader is trusted (viatrustProxyHeadersconfiguration), itshostandprotoparameters are extracted and take precedence over correspondingx-forwarded-hostandx-forwarded-protoheaders.Forwardedhost and proto parameters.Forwardedheader based on the configured trusted proxy headers.Reference: https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Forwarded