如何抑制X-Frame-Options SAMEORIGIN响应标头?

时间:2019-06-03 21:13:08

标签: iframe x-frame-options response-headers

我正在尝试删除X-Frame-Options SAMEORIGIN标头或将其设置为ALLOWALL

我已经在web.config和站点的IIS的Http响应标头中对其进行了设置,但仍然在浏览器中获得X-Frame-Options SAMEORIGIN,并且iframe内容未呈现。

<httpProtocol>
  <customHeaders>
    <remove name="X-Powered-By" />
    <add name="Cache-Control" value="public" />
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="X-Frame-Options" value="ALLOWALL" />
  </customHeaders>
</httpProtocol>

在Firefox和Chrome中是相同的。

在其他地方我应该寻找它还是可以修改它?

1 个答案:

答案 0 :(得分:0)

转到Global.asax.cs中的Application_Start()并添加此行

System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true;

请注意,尽管这意味着任何人都可以在iframe中使用您的应用程序。因此,值得使用以下代码添加新文件:

using System.Web.Mvc;

namespace MyApplication
{
    public class NoIframeAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            filterContext.HttpContext.Response.Headers.Set("X-Frame-Options", "SAMEORIGIN");
        }
    }
}

将以下行添加到FilterConfig.cs中的RegisterGlobalFilters方法中:

filters.Add(new NoIframeAttribute());

现在它可以安全地返回到您的应用程序中了,您可以通过以下方式在应用程序中的任何位置删除xframe选项:

Response.Headers.Remove("X-Frame-Options");