如何抑制 X-Frame-Options SAMEORIGIN 响应标头?
Posted
技术标签:
【中文标题】如何抑制 X-Frame-Options SAMEORIGIN 响应标头?【英文标题】:How to suppress X-Frame-Options SAMEORIGIN response header? 【发布时间】:2019-10-19 10:27:43 【问题描述】:我正在尝试删除 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】:转到 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());
现在它已安全返回到您的应用程序中,您可以在应用程序中的任何需要删除 xframeoptions 的地方使用
Response.Headers.Remove("X-Frame-Options");
【讨论】:
以上是关于如何抑制 X-Frame-Options SAMEORIGIN 响应标头?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 laravel 项目中设置 X-Frame-Options?
Content-Security-Policy 如何与 X-Frame-Options 一起使用?
如何在 express.js node.js 中设置 X-Frame-Options
如何在 nginx 中正确设置 X-Frame-Options Allow-From