这是一个奇怪的问题,直到最近这个功能正常运行并且仍然在不同的网站上工作。
我正在使用iframe来允许用户在页面上启动下载而无需使用asp.net提交实际页面:
<iframe id="ifrDownload" name="ifrDownload" scrolling="no" frameborder="0" marginwidth="0" marginheight="0" style="display: none;" src="Download.aspx"></iframe>
然而,最近在尝试下载时,我在访问iframe时得到了臭名昭着的“访问属性'权限被拒绝'文档'错误,显然本地文件与父文件在同一个域中,所以我不确定为什么会发生这种情况,但我确定这与我在Firebug中检查页面时发生的奇怪事情有关。
在没有任何问题的情况下运行的网站会在检查时显示以下iframe:
<iframe id="ifrDownload" scrolling="no" frameborder="0" src="Download.aspx" style="display: none;" marginheight="0" marginwidth="0">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> </title>
</head>
<body>
<form id="downloadForm" action="Download.aspx" method="post" name="downloadForm">
<div>
<input id="__VIEWSTATE" type="hidden" value="/wEPDwULLTExNjE3Nzc3MzlkZMnbcG6xJn5Jp/GA7fqNd/QyKuTC" name="__VIEWSTATE">
</div>
<div>
<input id="__EVENTVALIDATION" type="hidden" value="/wEWBgLTi7KCAQLnqqEBAuXC+6cLAoPKgZYKAvWdu+YGApj5qL4FFEFbauoxzxy+93iYHGZSO7dPLso=" name="__EVENTVALIDATION">
</div>
<div>
<input id="downloadButton" type="submit" style="display: none;" value="Confirm Download" name="downloadButton">
<input id="attachmentIdField" type="hidden" name="attachmentIdField">
<input id="tableFieldId" type="hidden" name="tableFieldId">
<input id="filenameField" type="hidden" name="filenameField">
<input id="whichField" type="hidden" name="whichField">
</div>
</form>
</body>
</html>
</iframe>
但非工作网站只是显示:
<iframe id="ifrDownload" scrolling="no" frameborder="0" src="Download.aspx" style="display: none;" marginheight="0" marginwidth="0" name="ifrDownload">
<html>
<head></head>
<body></body>
</html>
</iframe>
对于两个站点,Download.aspx文件几乎完全相同,并且与两者的父页面位于同一目录中,我只能认为我无意中将某些代码放在了破坏iframe工作方式的地方。
有什么建议吗?我已经使用了HTML,一切似乎都很好。
答案 0 :(得分:0)
好的,经过多次搜索;我在Global.asax文件中找到了以下内容:
void Application_BeginRequest(object sender, EventArgs e) {
HttpContext.Current.Response.AddHeader("X-Frame-Options", "DENY");
}
禁用所有跨框架选项,有效禁用链接到aspx页面的所有iframe,但不禁用html页面。
删除此代码,显然是为了阻止跨站点脚本,解决了这个问题。