feat(networking): add proxy-aware origin handling - #47
Open
tintinhamans wants to merge 1 commit into
Open
Conversation
Signed-off-by: tintinhamans <5984296+tintinhamans@users.noreply.github.com>
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.
Adds optional reverse-proxy support while preserving direct hosting. Existing Kestrel HTTP/HTTPS endpoints and certificate handling remain supported and unchanged.
When
TrustedProxiesis empty, forwarded headers are ignored and Services continues using the connection’s direct client IP, scheme, and host.When enabled, trusted proxies may provide:
X-Forwarded-Forfor the original client IPX-Forwarded-Protofor the public schemeX-Forwarded-Hostfor the public host and portX-Forwarded-Prefixfor a public path prefixTrusted proxies can be configured using individual IPv4/IPv6 addresses and CIDR networks:
"*"trusts forwarded headers from every sender. It is exclusive and cannot be combined with IP addresses or CIDR networks:This should only be used when Services is network-isolated and reachable exclusively through the reverse proxy.
WebSocket URLs are derived from the effective request instead of hardcoded addresses. Direct HTTP and HTTPS continue producing
ws://andwss://URLs respectively.For example, a proxied request to
https://api.playgenerals.onlineproduceswss://api.playgenerals.online/ws.AllowedOriginsconfigures which browser origins may use the HTTP API and WebSocket endpoint:Explicit origins support credentials and wildcard subdomains.
"*"allows every origin without credentials. It is exclusive and cannot be combined with explicit origins:An empty list denies browser-origin access. Native clients (e.g. game clients) that omit the
Originheader remain supported.The HTTPS Kestrel endpoint is no longer mandatory. Deployments may continue serving HTTPS directly or optionally run HTTP-only behind a TLS-terminating proxy.