gpt4 book ai didi

c# - ASP.Net 核心 : X-Frame-Options strange behavior

转载 作者:太空狗 更新时间:2023-10-29 17:40:02 25 4
gpt4 key购买 nike

我需要删除 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();
});

响应跨域请求所需的操作用结果过滤器属性修饰:

    public class SuppresXFrameOptionFilter : ResultFilterAttribute
{
public override async Task OnResultExecutionAsync(ResultExecutingContext context,
ResultExecutionDelegate next)
{
context.HttpContext.Response.Headers.Remove("X-Frame-Options");

await next();
}
}

奇怪的是。第一个跨域请求失败,因为尽管过滤器最终按预期工作 X-Frame-Options: SAMEORIGIN仍然存在于响应中(我在中间件中的 next() 之后检查过它 - header 重新出现)。如果我按 F5, header 不再在响应中,并且一切正常。只有 X-Frame-Options 才会发生这种情况 header ,自定义的被正确删除。是什么造就了X-Frame-Options哪个已被删除再次出现在响应中?

最佳答案

我会在第一次请求时说 Antiforgery保存 cookie,这意味着它还尝试设置 X-Frame-Options header 。

如果您想在 Antiforgery 中禁用该 header 并自己手动处理它,您需要的是将 SuppressXFrameOptionsHeader 设置为 true ;)

services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);

关于c# - ASP.Net 核心 : X-Frame-Options strange behavior,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40523565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com