Yur*_*pka 2 asp.net-mvc iframe asp.net-mvc-4
正如我在主题中已经提到的,我有一个MVC站点,我需要禁用将其加载到IFrame中.
我已经创建了用于测试目的的简单页面,我尝试加载到我的网站和Google.com的两个IFrame中.我可以看到我的网站已加载但谷歌不是.这意味着我需要在我的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>
Run Code Online (Sandbox Code Playgroud)
那么在MVC网站中我必须写什么以及在哪里实现呢?
简单快速的解决方案是在Global.asax中添加以下内容 -
protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
Response.AddHeader("X-Frame-Options", "SAMEORIGIN");
}
Run Code Online (Sandbox Code Playgroud)
然后试试iframe.页面无法在iframe中打开.HTH.
可以使用X-Frame-Options
HTTP头属性来避免在IFrame中打开ASP.NET MVC应用程序.
将此属性插入HTTP标头有几种不同的方法:
1. 配置IIS以将此属性添加到所有HTTP响应
2.在每个控制器的每个必要的操作方法中设置此属性
public class HomeController : Controller
{
public ActionResult Index()
{
Response.AppendHeader("X-Frame-Options", "SAMEORIGIN");
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
3.以此处描述的方式创建C#属性,并将其应用于操作方法和控制器
[HttpHeader("X-Frame-Options", "SAMEORIGIN")]
public class HomeController : Controller
{
public ActionResult Index()
{
}
}
Run Code Online (Sandbox Code Playgroud)
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");
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以在 web.config 中添加一个条目:
<system.webServer>
...
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="SAMEORIGIN" />
</customHeaders>
</httpProtocol>
...
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3514 次 |
最近记录: |