首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.Net核心: X-Frame-Options奇怪行为

ASP.Net核心: X-Frame-Options奇怪行为
EN

Stack Overflow用户
提问于 2016-11-10 17:02:35
回答 1查看 13.5K关注 0票数 15

我需要从我的一些操作中删除X-Frame-Options: SAMEORIGIN头,这些操作应该为iframe呈现内容。只要它被默认添加到请求中,我就在Startup.csservices.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = false);中禁用了它。然后我写了一个简单的中间件:

代码语言:javascript
复制
    app.Use(async (context, next) =>
    {
        context.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN");

        await next();
    });

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

代码语言:javascript
复制
    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()之后检查了它-头部重新出现)。如果我按下F5,报头就不在响应中了,一切都会正常工作。这只会发生在X-Frame-Options头上,自定义头会被正确删除。是什么使已删除的X-Frame-Options再次出现在响应中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-10 19:29:58

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

如果您想在防伪中禁用标头并手动处理它,您需要将SuppressXFrameOptionsHeader 设置为true ;)

代码语言:javascript
复制
services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40523565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档