1
0
mirror of https://github.com/bitwarden/server.git synced 2025-05-22 12:04:27 -05:00

use custom http client that follows redirects

This commit is contained in:
Nick Krantz 2025-05-20 11:10:37 -05:00
parent 5e23334a11
commit a448b3bc9b
No known key found for this signature in database
GPG Key ID: FF670021ABCAB82E
2 changed files with 20 additions and 14 deletions

View File

@ -51,13 +51,7 @@ public class ChangePasswordUriService : IChangePasswordUriService
Path = "/.well-known/resource-that-should-not-exist-whose-status-code-should-not-be-200"
};
var request = new HttpRequestMessage(HttpMethod.Get, url.ToString())
{
Headers =
{
{ "Cache-Control", "no-store" },
}
};
var request = new HttpRequestMessage(HttpMethod.Get, url.ToString());
var response = await _httpClient.SendAsync(request);
return !response.IsSuccessStatusCode;
@ -84,13 +78,7 @@ public class ChangePasswordUriService : IChangePasswordUriService
Path = "/.well-known/change-password"
};
var request = new HttpRequestMessage(HttpMethod.Get, url.ToString())
{
Headers =
{
{ "Cache-Control", "no-store" },
}
};
var request = new HttpRequestMessage(HttpMethod.Get, url.ToString());
var response = await _httpClient.SendAsync(request);
return response.IsSuccessStatusCode ? url.ToString() : null;

View File

@ -28,6 +28,24 @@ public static class ServiceCollectionExtension
AllowAutoRedirect = false,
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
});
// The CreatePasswordUri handler wants similar headers as Icons to portray coming from a browser but
// needs to follow redirects to get the final URL.
services.AddHttpClient("ChangePasswordUri", client =>
{
client.Timeout = TimeSpan.FromSeconds(20);
client.MaxResponseContentBufferSize = 5000000; // 5 MB
// Let's add some headers to look like we're coming from a web browser request. Some websites
// will block our request without these.
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " +
"(KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.8");
client.DefaultRequestHeaders.Add("Cache-Control", "no-cache");
client.DefaultRequestHeaders.Add("Pragma", "no-cache");
}).ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
});
}
public static void AddHtmlParsing(this IServiceCollection services)