我花了幾天時間(對我來說真的很多時間)來解決這個問題,但最後我找到了一些解決方法。
說實話,我已經閱讀了很多關於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-changing-in-azure-web-role/)唯一的解決方案是從x-frame-options頭部退出。儘管在我看來,webbrowsers至少應該支持AllowFor atribute來解決這個問題。
謝謝,最好的問候!
Grzegorz
感謝您的幫助 - 添加完全相同的問題,並將您的解決方案排序! – EdsonF
感謝分享 - 爲我解決了同樣的問題。 – Rowan