簡體   English   中英

刪除僅在“登錄”頁面中自動添加的X-Frame-Options

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM