我正在一个公司公司网络上托管的网站上工作,并且只能从该网络内访问,因此我对跨域请求没有任何担心。

无论如何,我正在使用的这个特定网站在导航栏中添加了“提供反馈”链接。此“提供反馈”链接打开一个jQuery模态对话框,并且在此对话框中是一个iframe,它从URL加载,该URL的服务器与该特定网站的托管服务器不同,因此出现了错误。

MVC4工作正常,没有这样的问题,只有当我升级到MVC5时。 MVC5有一些不同之处,它可以防止将内容加载到框架中。

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



较大版本的Firebug:


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

$(document).ready(function () {
            $('body').append("<div id='dialog-modal'><iframe width='900' height='420' src='http://blah.blah.net/ApplicationName/AppFeedback/Create?appId=TestApp'></iframe></div>");
            $("#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对我有用:

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


显然,MVC4和MVC5之间存在差异,它在MVC4中起作用,但在MVC5中却没有,我正在使用它。

10-06 07:43