Windows Azure iframe域提供者 = X-Frame-Options问题。

3
我有一个关于自定义域名的问题。我的域名提供商将重定向网站放在 iframe 中。
<HTML><HEAD><TITLE></TITLE></HEAD>
<FRAMESET ROWS="*"><FRAME NAME=997 NORESIZE SRC="xxx. azurewebsites .net/">
<NOFRAMES><BODY><A HREF="xxx. azurewebsites .net/">click here</A></BODY></NOFRAMES>        </FRAMESET></HTML>

目前我正在使用 Azurewebsites 托管,并且当我使用自定义域访问我的网站时,我无法使用除首页控制器之外的任何操作。

问题出在 x-frame-options header 上,例如:

拒绝显示“”框架,因为它将“X-Frame-Options”设置为“SAMEORIGIN”。

有没有解决这种行为的方法?还是这是我的域名提供商的问题?

此致敬礼。

1个回答

5

我花了几天时间(对我来说确实是很长的时间)来解决这个问题,但最终我找到了一些解决方法。

说实话,我已经阅读了很多关于x-frame-problem的文章,它的属性(Deny、SameOrigin、AllowsAll、AllowsFor等),但我没有找到任何可靠的解决方案。当然,我理解点击劫持和跨站点问题,但我知道我的方法不完全正确和安全,因为它从请求中删除了头部的值。

所以这就是在Global.asax.cs中的解决方法:

namespace xxxx
{
    public class MvcApplication : HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }

        private void Application_EndRequest(object sender, EventArgs e)
        {
            Response.Headers["X-FRAME-OPTIONS"] = string.Empty;
        }
    }
}

总之,我必须承认几件事情:
Chrome浏览器不支持AllowFor属性和AllowAll属性。它只理解Deny和SameOrigin属性,而Internet Explorer则处理AllowAll属性。FireFox的行为类似于Chrome。
此外,IIS或Windows Azure主机会自动将具有SameOrigin属性的此标头添加到响应中。 (与Somme.com主机相同)。
在我的情况(以及我注意到的其他人http:// www. windows-azure.net /x-frame-options-header-is-not-changing-in-azure-web-role/)中,唯一的解决方案是放弃x-frame-options标头。尽管我觉得Web浏览器应该至少支持AllowFor属性来克服这个问题。
谢谢并致以最好的问候!
Grzegorz

1
感谢您的帮助 - 添加完全相同的问题,您的解决方案已经解决了它! - EdsonF
谢谢分享 - 这也为我解决了同样的问题。 - Rowan
感谢您的解决方案:我必须嵌入一个 Web 应用程序,从 Wordpress 页面显示一个简单的表单。iframe 项目总是显示:Refused to display 'https://anysite.azurewebsites.net/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.您的答案解决了这个问题! - Hagen
我该如何在MVC ASP.NET Azure网站上实现这个功能?谢谢。 - sidsud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接