2016-11-10 21 views
6

X-Frame-Options: SAMEORIGIN başlığını, iframe için içerik oluşturması gereken bazı eylemlerimden kaldırmam gerekiyor. İsteklere varsayılan olarak eklendiği sürece, Startup.cs: services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = false);: services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = false);'da devre dışı bıraktım. Sonuç filtre özniteliği ile dekore alanlar arası isteklere cevap vermek gerekliASP.Net Temel: X-Frame-Options garip davranışı

app.Use(async (context, next) => 
    { 
     context.Response.Headers.Add("X-Frame-Options", "SAMEORIGIN"); 

     await next(); 
    }); 

Eylemler:

public class SuppresXFrameOptionFilter : ResultFilterAttribute 
    { 
     public override async Task OnResultExecutionAsync(ResultExecutingContext context, 
ResultExecutionDelegate next) 
     { 
      context.HttpContext.Response.Headers.Remove("X-Frame-Options"); 

      await next(); 
     } 
    } 

İşte weiredness geliyor Sonra basit bir ara yazılım yazdı. İlk çapraz etki alanı isteği başarısız olur, çünkü filtrenin sonunda beklendiği gibi çalıştığı X-Frame-Options: SAMEORIGIN hala yanıtta (ben next() ara yazılımda kontrol ettim - başlık yeniden belirlendi). F5 tuşuna basarsam, başlık artık cevapta kalmaz ve her şey gerektiği gibi çalışır. Bu yalnızca X-Frame-Options başlığı ile gerçekleşir, özel bir doğru kaldırılır. Kaldırılan X-Frame-Options neyi tekrardan bir yanıtta görünüyor?

cevap

9

İlk istekte Antiforgery çerezini kaydeder ve bu da X-Frame-Options başlığını ayarlamaya çalıştığı anlamına gelir.

Eğer Antiforgery o başlık devre dışı bırakmak ve kendiniz el ele istiyorsanız, gerçek olamayacak SuppressXFrameOptionsHeaderayarlıyor istediğini;)

services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);