[英]Removing X-Frame-Options being added automatically only in Login page
我正在開發一個ASP.NET MVC應用程序,需要在另一個網站的iframe
中加載。 但是登錄頁面不會出現在iframe
因為正在響應X-Frame-Options
發送Header,並將其設置為SAMEORIGIN
。 因此,瀏覽器不會在iframe
顯示頁面。 我已經谷歌搜索並嘗試了多項但沒有任何效果。
我正在使用ASP.NET表單身份驗證。 可能在這種情況下,IIS在登錄頁面中添加此標頭以增加安全性。 但我需要在我的用例中擺脫這種情況。
我嘗試添加自定義標頭
<httpProtocol>
<customHeaders>
<add name="X-Frame-Options" value="ALLOW" />
</customHeaders>
</httpProtocol>
但是SAMEORGIN
仍然用逗號添加到標題中。
我還嘗試使用Response.Headers["X-Frame-Options"] = "ALLOW"
從C#添加Header值。 它會導致兩個標題具有相同的名稱。
我也在web.config中嘗試過這個
<customHeaders>
<remove name="X-Frame-Options" />
</customHeaders>
它也沒有奏效。
MVC 5自動添加一個X-Frame-Options標頭,所以轉到你的Global.asax
文件並將其添加到Application_Start()
方法:
System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
請注意,特別是對於登錄頁面,刪除此標題是不好的做法,因為它會打開您的站點以獲取登錄憑據網絡釣魚攻擊。 因此,如果您的這個網站是公開可訪問的,我強烈建議保留此標題。
舊問題,但對於搜索類似問題的其他人,您可以使用以下解決方案刪除特定操作中的X-Frame-Options
:
首先,將此代碼添加到Global.asax.cs
方法Application_Start
(正如@Florian Haider所說):
System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
這將抑制所有操作中的標頭。 添加一個名為NoIframeAttribute.cs
的新文件, 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");
}
}
}
將以下行添加到FilterConfig.cs
RegisterGlobalFilters
方法:
filters.Add(new NoIframeAttribute());
現在,我們再次將標題添加到所有操作中。 但現在我們可以在需要時將其刪除。 只需在需要的地方添加以下行:
Response.Headers.Remove("X-Frame-Options");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.