diff --git a/src/Umbraco.Web.Common/Extensions/HttpRequestExtensions.cs b/src/Umbraco.Web.Common/Extensions/HttpRequestExtensions.cs index f12e469b6b..d60bb1249b 100644 --- a/src/Umbraco.Web.Common/Extensions/HttpRequestExtensions.cs +++ b/src/Umbraco.Web.Common/Extensions/HttpRequestExtensions.cs @@ -45,6 +45,9 @@ public static class HttpRequestExtensions public static string? ClientCulture(this HttpRequest request) => request.Headers.TryGetValue("X-UMB-CULTURE", out StringValues values) ? values[0] : null; + public static string? ClientSegment(this HttpRequest request) + => request.Headers.TryGetValue("X-UMB-SEGMENT", out StringValues values) ? values[0] : null; + /// /// Determines if a request is local. /// diff --git a/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs b/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs index f5b4f06a69..4783e9d3db 100644 --- a/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs +++ b/src/Umbraco.Web.Common/Middleware/UmbracoRequestMiddleware.cs @@ -104,7 +104,7 @@ public class UmbracoRequestMiddleware : IMiddleware // Also MiniProfiler.Current becomes null if it is handled by the event aggregator due to async/await _profiler?.UmbracoApplicationBeginRequest(context, _runtimeState.Level); - _variationContextAccessor.VariationContext ??= new VariationContext(_defaultCultureAccessor.DefaultCulture); + _variationContextAccessor.VariationContext ??= new VariationContext(context.Request.ClientCulture() ?? _defaultCultureAccessor.DefaultCulture, context.Request.ClientSegment()); UmbracoContextReference umbracoContextReference = _umbracoContextFactory.EnsureUmbracoContext(); Uri? currentApplicationUrl = GetApplicationUrlFromCurrentRequest(context.Request);