Sli*_*lip 9 c# x-frame-options asp.net-core
我需要X-Frame-Options: SAMEORIGIN从我的一些操作中删除标题,这些操作应该为iframe呈现内容.只要它被添加到默认我在禁用它的请求Startup.cs:services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = false);.然后我写了一个简单的中间件:
app.Use(async (context, next) =>
{
context.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");
await next();
});
Run Code Online (Sandbox Code Playgroud)
回答跨域请求所需的操作使用结果过滤器属性进行修饰:
public class SuppresXFrameOptionFilter : ResultFilterAttribute
{
public override async Task OnResultExecutionAsync(ResultExecutingContext context,
ResultExecutionDelegate next)
{
context.HttpContext.Response.Headers.Remove("X-Frame-Options");
await next();
}
}
Run Code Online (Sandbox Code Playgroud)
这就是疲惫.第一个跨域请求失败,因为尽管过滤器最终按预期工作,但X-Frame-Options: SAMEORIGIN仍然存在于响应中(我next()在中间件之后检查了它- 标题重新出现).如果我按F5,标题不再出现在响应中,一切正常.只有X-Frame-Options标题才会发生这种情况,正确删除自定义标题.什么使X-Frame-Options被删除的内容再次出现在响应中?
Dan*_*.G. 16
我会说第一次请求Antiforgery保存cookie,这意味着它也试图设置X-Frame-Options标题.
如果你想在Antiforgery中禁用那个标题并自己手动处理它,你想要的是设置SuppressXFrameOptionsHeader 为true ;)
services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5165 次 |
| 最近记录: |