【问题标题】:Why ASP.NET Core application not loading in iframe in the same domain?为什么 ASP.NET Core 应用程序没有加载到同一域的 iframe 中?
【发布时间】:2020-02-19 17:49:34
【问题描述】:

我有一个 ASP.NET Core MVC 网站,它是门户内 IFRAME 的 src。门户和 .NETCore 应用程序都具有相同的域(例如 site.portal.domain / portal.domain)。

当我进入门户时,我在浏览器中收到一条消息:

mysite.portal.domain 拒绝连接

(在 Chrome 上),其他浏览器给出不同的错误,如 IE 11 给出的:

此内容不能在框架中显示

在 Chrome 调试中,我发现了以下消息:

拒绝在框架中显示“https://site.portal.domain”,因为它 将“X-Frame-Options”设置为“sameorigin”。

关于如何解决这个问题的任何提示?

【问题讨论】:

    标签: html asp.net-mvc asp.net-core iframe


    【解决方案1】:

    X-FRAME-OPTIONS 用于防止clickjacking 尝试。如果您拥有该应用程序并希望它被框架,您可以跳过限制:

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

    默认情况下,生成 X-Frame-Options 标头的值为 SAMEORIGIN。如果此设置为“true”,则不会为响应生成 X-Frame-Options 标头。

    【讨论】:

    • 这帮助我修复了它,但您的代码不起作用。请使用有效的行编辑您的答案:I added services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true); to ConfigureServices in Startup.
    • 解决了 Chrome 和 IE 11 的问题,但是当我尝试 IE 9 时,我仍然遇到同样的错误。你有什么想法吗?
    • 对于 IE9,您必须明确添加带有允许的标题。对此版本兼容性的一个简单但不安全的修复方法是添加 app.Use(async (context, next) => { context.Response.Headers.Add("X-Frame-Options", "AllowAll"); await next(); }); 或者,最好添加您允许的 URL。
    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 2021-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多