2016-11-10 8 views
6

मुझे अपने कुछ कार्यों से X-Frame-Options: SAMEORIGIN शीर्षलेख को निकालना होगा, जो किसी आईफ्रेम के लिए सामग्री प्रस्तुत करना चाहिए। जब तक इसे डिफ़ॉल्ट रूप से अनुरोधों में जोड़ा जाता है, मैंने इसे Startup.cs: services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = false); में अक्षम कर दिया।एएसपी.Net कोर: एक्स-फ़्रेम-विकल्प अजीब व्यवहार

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

     await next(); 
    }); 

क्रिया क्रॉस-डोमेन अनुरोध करने के लिए जवाब देने के लिए परिणाम फिल्टर विशेषता के साथ सजाया जाता जरूरत::

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

      await next(); 
     } 
    } 

यहाँ weiredness आता है तो मैं एक साधारण मिडलवेयर लिखा था। पहला क्रॉस-डोमेन अनुरोध विफल रहता है क्योंकि फ़िल्टर के बावजूद X-Frame-Options: SAMEORIGIN अंत में अपेक्षित में काम करता है प्रतिक्रिया में अभी भी मौजूद है (मैंने इसे next() के बाद मिडलवेयर में चेक किया - हेडर फिर से दिखाई दिया)। अगर मैं F5 दबाता हूं तो हेडर प्रतिक्रिया में अब नहीं है और यह सब कुछ काम करता है जैसा कि करना चाहिए। यह केवल X-Frame-Options शीर्षलेख के साथ होता है, एक कस्टम एक सही ढंग से हटा दिया जाता है। X-Frame-Options क्या बनाता है जिसे एक प्रतिक्रिया में फिर से हटा दिया गया है?

उत्तर

9

मैं पहले अनुरोध पर कहूंगा कि Antiforgery कुकी को बचाता है जिसका अर्थ है कि यह X-Frame-Options हेडर सेट करने का भी प्रयास करता है।

आप Antiforgery में है कि शीर्ष लेख को निष्क्रिय करने और मैन्युअल रूप से यह अपने आप को संभाल चाहते हैं, आप क्या चाहते हैं सच होने की SuppressXFrameOptionsHeaderस्थापित कर रही है;)

services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true); 
संबंधित मुद्दे