我的自定义域名有问题。我的域名提供商将重定向网站放在 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 托管,当我通过自定义域访问我的网站时,我无法使用除家庭 Controller 之外的任何操作。
问题出在 x-frame-options header 中,例如:
拒绝在框架中显示“”,因为它将“X-Frame-Options”设置为“SAMEORIGIN”。
对于这种行为有什么解决办法吗?还是我的域名提供商的问题?
致以诚挚的问候。
最佳答案
我花了几天(对我来说真的很多时间)来解决这个问题,但最终我找到了一些解决方法。
说实话,我读过很多关于 x-frame-problem 及其属性(Deny、SameOrigin、AllowsAll、AllowsFor 等)的文章,但我还没有找到任何可靠的解决方案来解决此类问题。当然,我确实理解点击劫持和跨站点问题的问题,但是,我知道我的建议并不完全正确和安全,因为它从请求中删除了 header 的值。
这就是 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 主机也会自动添加此 header 以使用 SameOrigin 属性进行响应。 (与 Somme.com 主机相同)。
在像我这样的情况下(以及我注意到的其他人http://www.windows-azure.net/x-frame-options-header-is-not-changing-in-azure-web-role/)唯一的解决方案是退出 x-frame-options header 。尽管在我看来,网络浏览器至少应该支持AllowFor属性来解决这个问题。
谢谢并致以最诚挚的问候!
格热戈日
关于iframe - Windows Azure iframe 域提供商 = X-Frame-Options 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19976830/