diff --git a/backend/src/Squidex/Areas/Frontend/Middlewares/IndexExtensions.cs b/backend/src/Squidex/Areas/Frontend/Middlewares/IndexExtensions.cs
index 60c709362..c4ae98280 100644
--- a/backend/src/Squidex/Areas/Frontend/Middlewares/IndexExtensions.cs
+++ b/backend/src/Squidex/Areas/Frontend/Middlewares/IndexExtensions.cs
@@ -9,6 +9,7 @@ using System;
using System.Collections.Concurrent;
using System.Globalization;
using System.IO;
+using System.Net;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
@@ -33,20 +34,23 @@ namespace Squidex.Areas.Frontend.Middlewares
return context.Request.Path.Value.EndsWith(".html", StringComparison.OrdinalIgnoreCase);
}
- public static bool IsHtml(this HttpContext context)
+ public static bool IsNotModified(this HttpResponse response)
{
- return context.Response.ContentType?.ToLower().Contains("text/html") == true;
+ return response.StatusCode == (int)HttpStatusCode.NotModified;
}
- public static string AdjustHtml(this string html, HttpContext httpContext)
+ public static string AdjustBase(this string html, HttpContext httpContext)
{
- var result = html;
-
if (httpContext.Request.PathBase.HasValue)
{
- result = result.Replace("", $"");
+ html = html.Replace("", $"");
}
+ return html;
+ }
+
+ public static string AddOptions(this string html, HttpContext httpContext)
+ {
var uiOptions = httpContext.RequestServices.GetService>()?.Value;
if (uiOptions != null)
@@ -72,10 +76,10 @@ namespace Squidex.Areas.Frontend.Middlewares
var texts = GetText(CultureInfo.CurrentUICulture.Name);
- result = result.Replace("", $"\n");
+ html = html.Replace("", $"\n");
}
- return result;
+ return html;
}
private static string GetText(string culture)
diff --git a/backend/src/Squidex/Areas/Frontend/Middlewares/IndexMiddleware.cs b/backend/src/Squidex/Areas/Frontend/Middlewares/IndexMiddleware.cs
index 4ba2db152..25c055be7 100644
--- a/backend/src/Squidex/Areas/Frontend/Middlewares/IndexMiddleware.cs
+++ b/backend/src/Squidex/Areas/Frontend/Middlewares/IndexMiddleware.cs
@@ -23,7 +23,7 @@ namespace Squidex.Areas.Frontend.Middlewares
public async Task InvokeAsync(HttpContext context)
{
- if (context.IsHtmlPath() && context.Response.StatusCode != 304)
+ if (context.IsHtmlPath() && !context.Response.IsNotModified())
{
var responseBuffer = new MemoryStream();
var responseBody = context.Response.Body;
@@ -32,13 +32,18 @@ namespace Squidex.Areas.Frontend.Middlewares
await next(context);
- if (context.Response.StatusCode != 304)
+ if (!context.Response.IsNotModified())
{
context.Response.Body = responseBody;
var html = Encoding.UTF8.GetString(responseBuffer.ToArray());
- html = html.AdjustHtml(context);
+ html = html.AdjustBase(context);
+
+ if (context.IsIndex())
+ {
+ html = html.AddOptions(context);
+ }
context.Response.ContentLength = Encoding.UTF8.GetByteCount(html);
context.Response.Body = responseBody;
diff --git a/backend/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs b/backend/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs
index 7d2ac538c..694167c1f 100644
--- a/backend/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs
+++ b/backend/src/Squidex/Areas/Frontend/Middlewares/WebpackMiddleware.cs
@@ -6,6 +6,7 @@
// ==========================================================================
using System.IO;
+using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
@@ -26,7 +27,7 @@ namespace Squidex.Areas.Frontend.Middlewares
public async Task InvokeAsync(HttpContext context)
{
- if (context.IsIndex() && context.Response.StatusCode != 304)
+ if (context.IsIndex() && !context.Response.IsNotModified())
{
var handler = new HttpClientHandler
{
@@ -43,35 +44,12 @@ namespace Squidex.Areas.Frontend.Middlewares
{
var html = await result.Content.ReadAsStringAsync();
- html = html.AdjustHtml(context);
+ html = html.AdjustBase(context);
await context.Response.WriteAsync(html);
}
}
}
- else if (context.IsHtmlPath() && context.Response.StatusCode != 304)
- {
- var responseBuffer = new MemoryStream();
- var responseBody = context.Response.Body;
-
- context.Response.Body = responseBuffer;
-
- await next(context);
-
- if (context.Response.StatusCode != 304)
- {
- context.Response.Body = responseBody;
-
- var html = Encoding.UTF8.GetString(responseBuffer.ToArray());
-
- html = html.AdjustHtml(context);
-
- context.Response.ContentLength = Encoding.UTF8.GetByteCount(html);
- context.Response.Body = responseBody;
-
- await context.Response.WriteAsync(html);
- }
- }
else
{
await next(context);
diff --git a/backend/src/Squidex/Areas/Frontend/Startup.cs b/backend/src/Squidex/Areas/Frontend/Startup.cs
index 2d8edf0ac..6c3f5f74c 100644
--- a/backend/src/Squidex/Areas/Frontend/Startup.cs
+++ b/backend/src/Squidex/Areas/Frontend/Startup.cs
@@ -52,14 +52,12 @@ namespace Squidex.Areas.Frontend
return next();
});
+ app.UseMiddleware();
+
if (environment.IsDevelopment())
{
app.UseMiddleware();
}
- else
- {
- app.UseMiddleware();
- }
app.UseStaticFiles(new StaticFileOptions
{