Я пытаюсь добавить заголовок политики безопасности контента в заголовок ответа для запросов all
. Итак, я создал промежуточное ПО OWIN.
public class SecurityHeaderMiddleware
{
private readonly INonceService _nonceService = null;
private readonly Func<Task> _next;
public SecurityHeaderMiddleware(Func<Task> next, INonceService nonceService)
{
_nonceService = nonceService;
_next = next;
}
public async Task Invoke(IOwinContext context)
{
// do something here to add CSP header in context.Response.Headers
await _next.Invoke();
}
Затем, чтобы вызывать свое промежуточное ПО для каждого запроса, я регистрирую свое промежуточное ПО в маркере этапа startup.cs before PostResolveCache
в соответствии с предложением здесь
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.Use((context, next) =>
{
var nonceService = ServiceLocator.Current.GetInstance<INonceService>();
var middleware = new SecurityHeaderMiddleware(next, nonceService);
return middleware.Invoke(context);
});
app.UseStageMarker(PipelineStage.PostResolveCache);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Cookies"
});
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
// set options here
});
MvcHandler.DisableMvcResponseHeader = true;
}
}
Однако мое промежуточное ПО вызывается только для фактической страницы или любого запроса ajax, оно не вызывается, когда браузер делает запрос к javascript, CSS или изображениям.
Как вызвать пользовательское промежуточное ПО для всех запросов? Если не промежуточное ПО OWIN, то какие у меня есть варианты, чтобы добавить заголовок для всех запросов в asp.net