diff --git a/ArchiSteamFarm/WebBrowser.cs b/ArchiSteamFarm/WebBrowser.cs index a359715a5..ed5a444dc 100644 --- a/ArchiSteamFarm/WebBrowser.cs +++ b/ArchiSteamFarm/WebBrowser.cs @@ -502,7 +502,12 @@ namespace ArchiSteamFarm { break; } } else { - redirectUri = new Uri(requestUri.GetLeftPart(UriPartial.Authority) + redirectUri); + redirectUri = new Uri(requestUri, redirectUri); + } + + // Per https://tools.ietf.org/html/rfc7231#section-7.1.2, a redirect location without a fragment should inherit the fragment from the original URI + if (!string.IsNullOrEmpty(requestUri.Fragment) && string.IsNullOrEmpty(redirectUri.Fragment)) { + redirectUri = new UriBuilder(redirectUri) { Fragment = requestUri.Fragment }.Uri; } // According to the RFC, POST requests in certain types of redirection must be converted into GET