2015-05-21 10 views
8

Başka bir web sitesinde bir iframe içine yüklenmesi gereken bir ASP.NET MVC uygulaması geliştiriyorum. Ancak, iframe içinde oturum açma sayfası görünmeyecektir, çünkü SAMEORIGIN olarak ayarlanmış olan X-Frame-Options yanıtında bir Başlık gönderilmektedir. Tarayıcı, bu nedenle iframe numaralı sayfayı görüntülemiyor. Ben zaten Googled ve birden çok şey denedim ama hiçbir şey çalıştı.Yalnızca Giriş sayfasında otomatik olarak eklenen X-Frame-Options'ın kaldırılması

ASP.NET form kimlik doğrulamasını kullanıyorum. Bu durumda olabilir IIS, bu üstbilgiyi ek güvenlik için giriş sayfasına ekler. Ama benim kullanım durumumdan kurtulmam gerekiyor.

Ben

<httpProtocol> 
    <customHeaders> 
    <add name="X-Frame-Options" value="ALLOW" /> 
    </customHeaders> 
</httpProtocol> 

Ama SAMEORGIN hala virgül ile başlıkta ekleniyor özel bir başlık ekleyerek çalıştı.

Ayrıca Response.Headers["X-Frame-Options"] = "ALLOW" kullanarak C# Header değerini eklemeye çalıştım. Aynı isimde iki başlık var.

Ben de web.config

Ayrıca çalıştı vermedi
<customHeaders> 
    <remove name="X-Frame-Options" /> 
</customHeaders> 

bu denedik.

+1

deneyin sizin Application_Start bu ekleme() yöntemini Global.asax içerisindeki: 'System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true;'. MVC 5 otomatik olarak bir X-Frame-Options başlığı ekler –

+1

Her şeyi doğru yapıyor gibi görünüyorsanız, giriş sayfanızın yapılandırma değişikliklerini yaptığınız uygulamanın bir parçası olmaması olasıdır. –

+0

@ShashankChaturvedi Giriş sayfam, aynı uygulamanın parçasıdır. – shashwat

cevap

18

MVC 5 otomatik bir X-Frame-Options Başlığını ekler, böylece Global.asax dosyaya gidip Application_Start() yöntemine Bu ekleyin:

System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true; 

özellikle bir giriş sayfası için o kadar kötü bir uygulamadır unutmayın Bu üstbilgiyi kaldırın, çünkü giriş kimlik bilgileri için kimlik avı saldırıları yapmak üzere sitenizi açar. Yani bu sitenin herkese açık olarak erişilebilir olması durumunda, bu başlığı saklamanızı kesinlikle öneririz.

+0

Not için teşekkürler ama giriş sayfamı bir 'iframe' içinde açmam gerekiyor. – shashwat

1

Eski bir soru, ancak benzer soru ararken diğer insanların, aşağıdaki çözüm kullanarak belirli eylemleri X-Frame-Options kaldırabilirsiniz için:

Öncelikle Global.asax.cs yöntemin Application_Start bu kodu eklemek (@Florian Haider söylediği gibi) :

System.Web.Helpers.AntiForgeryConfig.SuppressXFrameOptionsHeader = true; 

Bu tüm eylemlerin yılında başlığı bastırır. Aşağıdaki kodu içeren NoIframeAttribute.cs adlı yeni bir dosya ekleyin:

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 yılında RegisterGlobalFilters yöntemine aşağıdaki satırı ekleyin:

filters.Add(new NoIframeAttribute()); 

Şimdi, biz yine bütün işleme eklenebilir başlığa sahip. Ama şimdi gerektiğinde onu kaldırabiliriz. gerektiği yerde sadece aşağıdaki satırı ekleyin:

Response.Headers.Remove("X-Frame-Options"); 
İlgili konular