我正在一个公司公司网络上托管的网站上工作,并且只能从该网络内访问,因此我对跨域请求没有任何担心。
无论如何,我正在使用的这个特定网站在导航栏中添加了“提供反馈”链接。此“提供反馈”链接打开一个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中却没有,我正在使用它。