指向本地页面的iframe为空且无法访问

时间:2012-03-05 15:53:57

标签: asp.net html iframe

这是一个奇怪的问题,直到最近这个功能正常运行并且仍然在不同的网站上工作。

我正在使用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,一切似乎都很好。

1 个答案:

答案 0 :(得分:0)

好的,经过多次搜索;我在Global.asax文件中找到了以下内容:

void Application_BeginRequest(object sender, EventArgs e) {
    HttpContext.Current.Response.AddHeader("X-Frame-Options", "DENY");
}

禁用所有跨框架选项,有效禁用链接到aspx页面的所有iframe,但不禁用html页面。

删除此代码,显然是为了阻止跨站点脚本,解决了这个问题。