sha*_*wat 18 c# asp.net iis asp.net-mvc iframe
我正在开发一个ASP.NET MVC应用程序,需要iframe在另一个网站中加载.但是登录页面不会出现在内部,iframe因为Header是在X-Frame-Options设置为的响应中发送的SAMEORIGIN.浏览器因此没有显示页面iframe.我已经谷歌搜索并尝试了多项但没有任何效果.
我正在使用ASP.NET表单身份验证.可能是在这种情况下,IIS在登录页面中添加此标头以增加安全性.但我需要在我的用例中摆脱这种情况.
我尝试添加自定义标头
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="ALLOW" />
</customHeaders>
</httpProtocol>
Run Code Online (Sandbox Code Playgroud)
但是SAMEORGIN仍然用逗号添加标题.
我也尝试使用C#添加Header值Response.Headers["X-Frame-Options"] = "ALLOW".它会导致两个标题具有相同的名称.
我也在web.config中尝试过这个
<customHeaders>
<remove name="X-Frame-Options" />
</customHeaders>
Run Code Online (Sandbox Code Playgroud)
它也没有奏效.
Flo*_*der 28
MVC 5会自动添加一个X-Frame-Options标题,所以转到你的Global.asax文件并将其添加到Application_Start()方法中:
System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
Run Code Online (Sandbox Code Playgroud)
请注意,特别是对于登录页面,删除此标题是不好的做法,因为它会打开您的站点以获取登录凭据网络钓鱼攻击.因此,如果您的这个网站是公开可访问的,我强烈建议保留此标题.
Ahm*_*hei 13
旧问题,但对于搜索类似问题的其他人,您可以X-Frame-Options使用以下解决方案删除特定操作:
首先,将此代码添加到方法Application_Start中Global.asax.cs(如@Florian Haider所说):
System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
Run Code Online (Sandbox Code Playgroud)
这将抑制所有操作中的标头.添加一个名为NoIframeAttribute.cs包含以下代码的新文件:
using System.Web.Mvc;
namespace MyApplication
{
public class NoIframeAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Response.Headers.Set("X-Frame-Options", "SAMEORIGIN");
}
}
}
Run Code Online (Sandbox Code Playgroud)
RegisterGlobalFilters将以下行添加到方法中FilterConfig.cs:
filters.Add(new NoIframeAttribute());
Run Code Online (Sandbox Code Playgroud)
现在,我们再次将标题添加到所有操作中.但现在我们可以在需要时将其删除.只需在需要的地方添加以下行:
Response.Headers.Remove("X-Frame-Options");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15061 次 |
| 最近记录: |