在本地asp页面

时间:2017-03-15 15:51:29

标签: asp.net-mvc iis iframe asp-classic localhost

我有一个经典的asp网站和一个MVC网络应用程序。我在开发环境中将它们作为localhost本地托管。我也在远程服务器上设置了它们。

以下是我的应用的网址列表:

  1. 本地托管的经典asp网站:http://localhost/AspAppName/
  2. 托管在远程服务器(IIS)上的经典asp站点:http://ServerName/AspAppName/
  3. 本地托管的MVC网络应用:http://localhost/MvcAppName/Dir/SubDir
  4. 托管在远程服务器(IIS)上的MVC Web应用程序:http://ServerName/MvcAppName/Dir/SubDir
  5. 我想要做的是让我的MVC应用程序在我的经典asp网站的一个页面上的iframe中运行。

    • 当我在本地运行的经典asp网站的iframe中运行本地版本的MVC应用程序时,一切正常。在这种情况下,我使用“http://localhost/MvcAppName/Dir/SubDir”作为在我的iframe中执行的网址,iframe位于“http://localhost/AspAppName/SomePage.asp
    • 当我在我本地运行的经典asp网站的iframe中本地运行我的远程MVC应用程序时,我收到以下错误:

    “此内容无法在框架中显示。

    为帮助保护您在本网站上输入的信息的安全性,此内容的发布者不允许将其显示在框架中“

    在这种情况下,我使用“http://ServerName/MvcAppName/Dir/SubDir”作为在我的iframe中执行的网址,iframe位于“http://localhost/AspAppName/SomePage.asp

    错误显示在IE中。在Firefox和Chrome中,iframe区域只是空白。

    仅用于测试目的,看看这些是否是一些跨域限制/设置我尝试将我的经典asp站点托管在远程服务器(http://ServerName/AspAppName/RandomPage.asp)上,在我本地托管的经典asp站点的iframe中{{{ 3}})。在这种情况下,我没有看到任何错误,本地asp网站显示iframe内容与远程托管的asp页面没有任何问题。

    以下是本地计算机上IIS的一些应用程序池信息:

    • MvcAppName:.NET CLR版本:v4.0,托管管道模式:集成;身份:ApplicationPoolIdentity
    • AspAppName:.NET CLR版本:v2.0;管理管道模式:经典;身份:NetworkService(!,?)

    以下是远程服务器上IIS的一些应用程序池信息:

    • MvcAppName:.NET CLR版本:v4.0,托管管道模式:集成;身份:ApplicationPoolIdentity
    • AspAppName:.NET CLR版本:v2.0;管理管道模式:经典;身份:ApplicationPoolIdentity(!,?)

    我非常感谢有关在我本地运行的asp网站的iframe中嵌套远程运行的MVC应用程序可能导致我的问题的任何建议。

2 个答案:

答案 0 :(得分:0)

听起来您需要从网站中返回无法在iframe中显示的X-Frame-Options标头。此页面显示可用选项以及如何在各种服务器(包括IIS)中进行设置。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

答案 1 :(得分:0)

事实证明,X-Frame-Options设置被自动覆盖。要关闭它,我必须在Global.asax.cs中将以下行添加到Application_Start。

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;