fix: add extension method for getting base url that checks for proxy headers

This commit is contained in:
Stevan Freeborn
2024-04-14 16:59:53 -05:00
parent 0103ddc693
commit 532777f523
4 changed files with 17 additions and 8 deletions
+1 -1
View File
@@ -34,7 +34,7 @@
return;
}
BaseUrl = $"{HttpContextAccessor.HttpContext.Request.Scheme}://{HttpContextAccessor.HttpContext.Request.Host}";
BaseUrl = HttpContextAccessor.HttpContext.Request.GetBaseUrl();
OpenGraphUrl = $"{BaseUrl}{HttpContextAccessor.HttpContext.Request.Path}";
}
}
+1
View File
@@ -7,5 +7,6 @@
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Blog
@using Blog.Extensions
@using Blog.Components
@using Blog.Components.Utils
@@ -0,0 +1,10 @@
namespace Blog.Extensions;
public static class HttpRequestExtensions
{
public static string GetBaseUrl(this HttpRequest request)
{
var scheme = request.Headers["X-Forwarded-Proto"].FirstOrDefault() ?? request.Scheme;
var host = request.Headers["X-Forwarded-Host"].FirstOrDefault() ?? request.Host.Value;
return $"{scheme}://{host}";
}
}
+4 -6
View File
@@ -1,3 +1,5 @@
using Blog.Extensions;
var builder = WebApplication.CreateBuilder(args);
builder.Services.ConfigureOptions<FilePostServiceOptionsSetup>();
@@ -25,12 +27,8 @@ app.UseStatusCodePagesWithRedirects("/Error/{0}");
app
.MapGet("/rss", async (HttpContext context, IPostService postService) =>
{
var req = context.Request;
var scheme = req.Headers["X-Forwarded-Proto"].FirstOrDefault() ?? req.Scheme;
var host = req.Headers["X-Forwarded-Host"].FirstOrDefault() ?? req.Host.Value;
var url = $"{scheme}://{host}{req.PathBase}";
var baseUrl = context.Request.GetBaseUrl();
var url = $"{baseUrl}{context.Request.PathBase}";
var posts = await postService.GetPostsAsync();