asp.net-mvc - 如何在 IFrame 中禁用打开的 ASP.NET MVC 站点?

标签 asp.net-mvc asp.net-mvc-4 iframe

正如我在主题中已经提到的,我有一个 MVC 站点,我需要禁止将它加载到 IFrame 中。

我创建了用于测试目的的简单页面,并尝试将我的站点和 Google.com 加载到两个 IFrame 中。我可以看到我的网站已加载,但 Google 未加载。这意味着有必要在我的 MVC 站点中更改某些内容。

<!DOCTYPE html>
<html>
<body>

<iframe src="http://localhost:61831/" width="1200" height="800">
  <p>Your browser does not support iframes.</p>
</iframe>

<iframe src="http://google.com" width="1200" height="800">
  <p>Your browser does not support iframes.</p>
</iframe>

</body>
</html>

那么我必须在 MVC 站点中编写什么以及在哪里才能实现这一目标?

最佳答案

可以使用 X-Frame-Options HTTP header 属性可避免在 IFrame 中打开 ASP.NET MVC 应用程序。

有几种不同的方法可以将此属性插入到 HTTP header 中:

1. Configure IIS将此属性添加到所有 HTTP 响应

2.在每个 Controller 的每个必要的 Action 方法中设置这个属性

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            Response.AppendHeader("X-Frame-Options", "SAMEORIGIN");
            return View();
        }
    }

3.以描述的方式创建C#属性here并将其应用于操作方法和 Controller
    [HttpHeader("X-Frame-Options", "SAMEORIGIN")]
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
        }
    }

4.在Global.asax中设置该属性文件
public class MvcApplication : HttpApplication
{
    protected void Application_Start()
    {
        ...
    }

    protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
    {
        Response.AppendHeader("X-Frame-Options", "SAMEORIGIN");
    }
}

关于asp.net-mvc - 如何在 IFrame 中禁用打开的 ASP.NET MVC 站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258155/

相关文章:

c# - 使用 Json.Net 解析 forecast.io 天气数据时遇到问题

asp.net-mvc - 我的 MVC Controller 真的应该知道 JSON 吗?

javascript - 检测浏览器是否使用 GPU 加速图形进行渲染

asp.net-mvc - 如何在 MVC 或 Web Api ajax 调用中验证引荐来源网址

asp.net - 仅 Web API v2 项目的 HttpContext.Current.User null

javascript - 在 asp.mvc 上连续更新时间

c# - 无法在现有页面中使用挖空模板

html - 位置绝对 iframe 不正确的宽度和高度

javascript - 如何将 div 连接到 iframe 中用于搜索站点的数据 url

javascript - Node JS 从 url 获取所有 iframe