该问题与描述的问题类似here https://stackoverflow.com/questions/20254303/mvc-5-prevents-access-to-content-via-iframe但因为.net Core。并且解决方案也类似。
您还可以使用@user770 在问题评论中提出的建议。但是,这并不能解决 iframe 块的问题。这个答案都没有解释为什么刷新页面可以解决问题。然而,这对于用户来说并不是一个好的体验。
因此,解决方案很简单,并且可以通过代码完成,这样,如果有人尝试覆盖服务器中的 X-Frame-Options 设置,oyu 会更安全。任何多重设置都将派生为“拒绝”。
在项目的startup.cs 文件中,您必须添加此内容,以防止.net core 自动添加“sameorigin”设置。
public void ConfigureServices(IServiceCollection services)
{
//YOU CAN HAVE SOME CODE HERE
services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);
}
但是,这可能会导致您的站点存在风险,并且当您对两个站点和两个域都有控制权时,应应用此方案。
为了保护站点,您必须设置 X-frame-options 设置以允许您想要的域。再次在startup.cs中执行以下操作。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//YOU MAY HAVE SOME CODE HERE
app.Use(async (context, next) =>
{
context.Response.Headers.Add("X-Frame-Options", "ALLOW-FROM http://*.MYCONTROLLEDDOMAIN.COM https://*.MYCONTROLLEDDOMAIN.COM");
await next();
});
}
这样您就可以允许您的域在 iframe 中请求该网站。