X-Frame-Options拒绝加载:“http://test.test.net/Feedback/Create?appId=TestApp”不允许使用MVC5进行跨源框架

我正在一个托管在我公司网络上的网站,只能从网络中访问,所以我不关心跨域请求。

无论如何,这个我正在研究的特定网站我在导航栏中添加了“提供反馈”链接。 这个“提供反馈”链接打开一个jQuery模式对话框,在这个对话框中是一个iframe ,它加载的URL服务器不同于托管这个特定网站的服务器,因此我得到的错误。

MVC4运行良好,没有这样的问题,只有当我升级到MVC5时才会这样。 MVC5有一些不同之处可以防止将内容加载到框架中。

我已经阅读过将X-Frame选项设置为“ALLOWFROM” – 但这是否意味着我需要在iframe加载的应用程序URL或调用应用程序(导航栏中包含此链接的网站)上设置此选项? 我还要补充说,当我将应用程序从MVC4 / WebAPI升级到MVC5 / WebAPI版本2的iframe ,才会出现此问题。我使用以前版本的MVC时没有遇到任何问题。 我该如何解决这个问题?

在此处输入图像描述

更大版本的Firebug: 在此处输入图像描述

这是我的应用程序中的客户端代码,其中包含“提供反馈”的代码:

 $(document).ready(function () { $('body').append("
"); $("#dialog-modal").dialog({ buttons: { "Close": function () { $(this).dialog("close"); } }, title: "Provide Feedback!", autoOpen: false, height: 560, width: 940, modal: true, overlay: { backgroundColor: "#000000", opacity: 0.75 }, resizable: true, open: function () { $('.ui-widget-overlay').bind('click', function () { $('#dialog-modal').dialog('close'); }) } }); $("a.feedback").live("click", function (event) { event.preventDefault(); $("#dialog-modal").dialog("open"); });

将它放在Global.asax对我Global.asax

 protected void Application_PreSendRequestHeaders(object sender, EventArgs e) { HttpContext.Current.Response.Headers.Remove("X-Frame-Options"); } 

显然,MVC4和MVC5之间存在差异,它在MVC4中有效,但在MVC5中没有,这就是我正在使用的。

您应该在iframe中包含的应用程序上设置此响应标头。