सर्वर रिस्पांस हेडर IIS7 निकालें


107

IIS7 से "सर्वर" प्रतिक्रिया हेडर को हटाने का कोई तरीका है? कुछ लेख दिखा रहे हैं कि HttpModules का उपयोग करके हम उसी चीज़ को प्राप्त कर सकते हैं। अगर हमारे पास सर्वर का अधिकार नहीं है तो यह मददगार होगा। इसके अलावा मैं ISAPI फ़िल्टर लिखना नहीं चाहता।

मेरे पास अपने सर्वर के लिए व्यवस्थापक अधिकार हैं। इसलिए मैं उपरोक्त सामान नहीं करना चाहता। इसलिए, कृपया मुझे भी ऐसा करने में मदद करें।


जवाबों:


111

इसे अपने global.asax.cs में जोड़ें:

protected void Application_PreSendRequestHeaders()
{
    Response.Headers.Remove("Server");
    Response.Headers.Remove("X-AspNet-Version");
    Response.Headers.Remove("X-AspNetMvc-Version");
}

11
पता नहीं क्यों http मॉड्यूल का उत्तर इस से अधिक है, यह एक बहुत आसान है
jjxtra

2
NullReferenceExceptionयदि आपको भरोसा है तो आपको कैसिनी में मिल सकता है HttpContext.Currentयह ब्लॉग पोस्ट दिखाता है कि कैसिनी समर्थन को तोड़ने से बचने के लिए ऐसा कैसे करें, यदि यह आपके लिए महत्वपूर्ण है।
ओवेन ब्लैकर

49
इस काम करता है @PsychoDad ASP.NET केवल अनुरोध करता है, .css की तरह स्थिर फ़ाइलों और .js के लिए नहीं करने के लिए
मैक्स टोरो

1
MVC हेडर से छुटकारा पाने के लिए आप यह MvcHandler कर सकते हैं ।isableMvcResponseHeader = true;
प्रोवेगा

7
यह PreSendRequestHeadersउस वर्ग का उपयोग करने के लिए एक अच्छा विचार नहीं है जो लागू करता है IHttpModuleया Global.asax। मैंने तनाव भार के तहत सर्वर पर ऐप को फ्रीज करने की घटना देखी है। BeginRequestघटना प्रतिक्रिया हेडर परिवर्तन करने के लिए काम करना चाहिए। Hanselman.com/blog/ChecklistWhatNOTToDoInASPNET.aspx देखें ।
दिमित्री एस।

77

IIS7 में आपको एक HTTP मॉड्यूल का उपयोग करना होगा। VS में एक क्लास लाइब्रेरी के रूप में निम्नलिखित का निर्माण करें:

namespace StrongNamespace.HttpModules
{
  public class CustomHeaderModule : IHttpModule
  { 
    public void Init(HttpApplication context)
    {
      context.PreSendRequestHeaders += OnPreSendRequestHeaders;
    } 

    public void Dispose() { } 

    void OnPreSendRequestHeaders(object sender, EventArgs e)
    {
      HttpContext.Current.Response.Headers.Set("Server", "Box of Bolts");
    }
  }
}

इसके बाद अपने web.config में निम्न जोड़ें, या आप इसे IIS के भीतर कॉन्फ़िगर करें (यदि आप IIS के भीतर कॉन्फ़िगर करते हैं, तो असेंबली GAC में होनी चाहिए)।

<configuration>
  <system.webServer>
    <modules>
      <add name="CustomHeaderModule"
       type="StrongNamespace.HttpModules.CustomHeaderModule" />
    </modules>
  </system.webServer>
</configuration>

बहुत बढ़िया, मैं अपने सर्वर फ़ार्म में ETag हेडर को हटाने के लिए इसे ट्वीक भी कर सकता हूँ।
devstuff

यह कैसिनी में एक रनटाइम त्रुटि का कारण बनता है ... / ASP.NET देव सर्वर
14

2
@UpTheCreek ASP.Net देव सर्वर (कैसिनी) उस कोड को पसंद नहीं करेगा; इस ब्लॉग पोस्ट , यह करने के लिए एक समाधान है, हालांकि - आपको लगता है कि जांच करने की आवश्यकता HttpApplication, HttpRequest, HttpContext, और HttpResponseनहीं कर रहे हैं nullसाथ ही, कि जाँचHttpRequest.IsLocal है false
ओवेन ब्लैकर

2
हेडर को संशोधित करने के रूप में HttpCacheModule के साथ समस्याएँ पैदाPreSendRequestHeaders हो सकती हैं , आपको PostReleaseRequestStateइसके बजाय कुछ का उपयोग करना चाहिए ।
एरिक एच

5
जब IIS 304 स्थिर मोड्यूलर हेडर को स्थिर फ़ाइलों (सीएसएस / कम / छवियों / आदि) के लिए भेजता है, तो यह मॉड्यूल नहीं है क्योंकि यह ASP.NET पाइपलाइन तक नहीं पहुंचता है, इसलिए इस स्थिति में सर्वर: Microsoft IIS / 7.5 अभी भी प्रदान किया जाता है
Jano

42

कॉन्फ़िगरेशन खंड में IIS (UrlRewrite) के लिए URL रिवाइटर मॉड्यूल संस्करण 2.0 सक्षम होने के साथ <configuration><system.webServer><rewrite>आउटबाउंड नियम जोड़ें:

<outboundRules>
  <rule name="Remove RESPONSE_Server" >
    <match serverVariable="RESPONSE_Server" pattern=".+" />
    <action type="Rewrite" value="" />
  </rule>
</outboundRules>

11
ध्यान दें कि यह केवल सर्वर हेडर को खाली करता है, इसे हटाता नहीं है।
निक इवांस

अज्ञानता के लिए क्षमा करें, लेकिन मुझे इसे किस भाग में जोड़ना चाहिए ?; मैंने इसे <system.webServer>
Vignesh Subramanian

1
धन्यवाद! IIS 8.5 में काम करता है, यह इतना आसान है। मेरे पास टेक्स्ट एडिटर नहीं है, लेकिन आप आसानी से GUI का उपयोग कर सकते हैं। नाम RESPONSE_Server होना चाहिए, न कि केवल सर्वर (यह वह जगह है जहां मैं पहले असफल रहा)।
लुई मैथिज्सेन

यदि आप एक गैर-ASP.Net एप्लिकेशन प्राप्त कर लें तो यह काफी अच्छा है जब आप उल्लिखित कोड के साथ सर्वर हेडर को नहीं हटा सकते हैं
mhesabi

4
@vignesh यह कुछ UrlRewrite config सब्नोड्स है। आपको उन्हें एक rewriteनोड के नीचे रखना होगा system.webServer। यदि सर्वर पर UrlRewrite स्थापित नहीं है तो सावधान रहें, यह आपकी साइट को क्रैश कर देगा। और आप बेहतर तरीके से IIS कॉन्फिगरेशन कंसोल का उपयोग करेंगे ताकि यह जांचा जा सके कि यह उन कॉन्फ़िगरेशन नोड्स को कैसे लिखता है।
Frédéric

36

स्कॉट मिचेल अनावश्यक हेडर को हटाने के लिए एक ब्लॉग पोस्ट समाधान प्रदान करता है ।

जैसा कि पहले से ही अन्य उत्तरों में यहाँ कहा गया है, Serverहेडर के लिए, http मॉड्यूल समाधान है , या IIS 10+ के लिए एक web.config समाधान है , या आप URLRewrite का उपयोग इसे खाली करने के बजाय कर सकते हैं।

अप-टू-डेट (IIS 10 +) सेटअप के लिए सबसे व्यावहारिक समाधान removeServerHeaderweb.config में उपयोग किया जा रहा है:

<system.webServer>
  ...
  <security>
    <requestFiltering removeServerHeader="true" />
  </security>
  ...
</system.webServer>

के लिए X-AspNet-VersionऔरX-AspNetMvc-Version बस नहीं उन सब पर पैदा:, वह प्रत्येक प्रतिक्रिया पर उन्हें हटाने की तुलना में एक बेहतर तरीका प्रदान करता है।

enableVersionHeaderअक्षम करने के लिए उपयोग करें X-AspNet-Version, web.config में

<system.web>
  ...
  <httpRuntime enableVersionHeader="false" />
  ...
</system.web>

MvcHandler.DisableMvcResponseHeaderअक्षम करने के लिए .Net Application_Start ईवेंट का उपयोग करेंX-AspNetMvc-Version

MvcHandler.DisableMvcResponseHeader = true;

और अंत में, X-Powered-Byweb.config में कस्टम हेडर को IIS कॉन्फ़िगरेशन में हटा दें ।

<system.webServer>
  ...
  <httpProtocol>
    <customHeaders>
      <remove name="X-Powered-By" />
    </customHeaders>
  </httpProtocol>
  ...
</system.webServer>

खबरदार, यदि आपके पास एआरआर (एप्लीकेशन रिक्वेस्ट राउटिंग) है, तो यह स्वयं को भी जोड़ देगा X-Powered-By, जिसे कस्टम हेडर सेटिंग्स द्वारा हटाया नहीं जाएगा। इसे IIS प्रबंधक, IIS रूट पर संपादक कॉन्फ़िगरेशन (साइट पर नहीं) के माध्यम से हटाया जाना चाहिए: system.webServer/proxyनोड पर जाएं और सेट arrResponseHeaderकरें false। एक के बाद IISReset, इसे ध्यान में रखा जाता है।
(मुझे यह यहाँ मिल गया है , सिवाय इस पोस्ट के पुराने IIS 6.0 चीजों को कॉन्फ़िगर करने का तरीका है।)

यह मत भूलो कि एप्लिकेशन कोड द्वारा समाधान स्थिर सामग्री पर उत्पन्न हेडर के लिए डिफ़ॉल्ट रूप से लागू नहीं होता है (आप runAllManagedModulesForAllRequestsइसे बदलने के लिए सक्रिय कर सकते हैं , लेकिन यह चलाने के लिए सभी अनुरोधों का कारण बनता है। नेट पाइपलाइन)। यह तब से कोई समस्या नहीं है X-AspNetMvc-Versionक्योंकि इसमें स्टैटिक कंटेंट नहीं जोड़ा गया है (कम से कम अगर स्टैटिक रिक्वेस्ट को .Net पाइपलाइन में नहीं चलाया जाता है)।

साइड नोट: जब उद्देश्य का उपयोग की गई तकनीक को क्लोक करने के लिए है, तो आपको मानक .Net कुकी नाम भी बदलना चाहिए ( .ASPXAUTHयदि प्रपत्र सक्रिय हैं ( web.config में टैग nameपर विशेषता का उपयोग करें forms), ASP.NET_SessionId( टैग के <sessionState cookieName="yourName" />तहत web.config में उपयोग करें system.web), __RequestVerificationToken(इसे बदलें ) कोड के साथ AntiForgeryConfig.CookieName, लेकिन दुर्भाग्य से छिपे हुए इनपुट पर लागू नहीं होता है यह प्रणाली HTML में उत्पन्न होती है))।


18

वास्तव में कोडित मॉड्यूल और Global.asax उदाहरण केवल ऊपर दिखाए गए मान्य अनुरोधों के लिए काम करते हैं।

उदाहरण के लिए, अपने URL के अंत में <जोड़ें और आपको एक "खराब अनुरोध" पृष्ठ मिलेगा जो अभी भी सर्वर हेडर को उजागर करता है। बहुत सारे डेवलपर्स इसे नजरअंदाज करते हैं।

दिखाए गए रजिस्ट्री सेटिंग्स या तो काम नहीं करती हैं। URLScan "सर्वर" हेडर को हटाने का एकमात्र तरीका है (कम से कम IIS 7.5 में)।


यह मेरे लिए एक खराब अनुरोध पर भी कोडित मॉड्यूल (web.config में जोड़ा गया) के साथ काम कर रहा है;) Global.asax में यह वास्तव में काम नहीं कर रहा है (जैसे स्थैतिक फ़ाइलें आदि)
kapsiR

आशा करते हैं कि आपके पास अभी भी अनुरोध है, जिस पर मान्यता स्विच है।
डैन वेयर

1
क्या किसी के पास IIS 8+ के लिए urlscan का विकल्प है?
हर्स्टविस्ट

IIS10 में कम से कम एक कार्यशील समाधान है +: stackoverflow.com/a/53222967/1671558
इल्या चेर्नोमोर्डिक

16

या web.config में जोड़ें:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <remove name="X-AspNet-Version" />
            <remove name="X-AspNetMvc-Version" />
            <remove name="X-Powered-By" />
            <!-- <remove name="Server" />  this one doesn't work -->
        </customHeaders>
    </httpProtocol>
</system.webServer>

3
यह विधि 'सर्वर' हेडर को नहीं हटाती है। दूसरों को हटा दिया जाता है।
प्योर.क्रोम

आप सर्वर स्तर पर रिस्पांस हेडर कॉन्फ़िगरेशन में एक्स-संचालित-बाय से छुटकारा पा सकते हैं।
स्नोबर्बेट

1
मुझे नहीं पता कि क्या कोई ऐसा मामला है जहां यह रास्ता निकालता है X-AspNet-Versionऔर X-AspNetMvc-Versionहेडर करता है। मुझे पता है कि यह तरीका हमेशा काम नहीं करता है (यदि यह कभी काम करता है)। उन्हें हटाने के लिए अधिक विश्वसनीय तरीके के लिए @ फ़्रेडरिक उत्तर देखें।
TheBlueSky

IIS10 + में सर्वर हेडर को हटाने का एक तरीका है: stackoverflow.com/a/53222946/1671558
Ilya Chernomordik

14

यह web.configसेटअप सभी अनावश्यक हेडर को ASP.NET प्रतिक्रिया (कम से कम IIS 10 से शुरू) से हटाने के लिए काम करता है:

<!--Removes version headers from response -->
<httpRuntime enableVersionHeader="false" />

<httpProtocol>
  <customHeaders>
    <!--Removes X-Powered-By header from response -->
    <clear />
  </customHeaders>
</httpProtocol>

<security>
  <!--Removes Server header from response-->
  <requestFiltering removeServerHeader ="true" />
</security>

कृपया ध्यान दें कि यह "आवेदन" के लिए सभी शीर्षकों को छुपाता है, जैसा कि अन्य सभी दृष्टिकोण करते हैं। यदि आप उदाहरण के लिए कुछ डिफ़ॉल्ट पृष्ठ या IIS द्वारा उत्पन्न त्रुटि पृष्ठ पर पहुँचते हैं या ASP.NET आपके आवेदन के बाहर ये नियम लागू नहीं होंगे। इसलिए आदर्श रूप से वे IIS में मूल स्तर पर होने चाहिए और sill कुछ त्रुटि प्रतिक्रियाओं को IIS को ही छोड़ सकते हैं।

PS IIS 10 में एक बग है जो इसे कभी-कभी सही कॉन्फ़िगरेशन के साथ सर्वर हेडर भी दिखाता है। इसे अब तक ठीक कर लिया जाना चाहिए, लेकिन IIS / Windows को अपडेट करना होगा।


12

के अलावा URL पुनर्लेखन जवाब है, यहाँ के लिए पूर्ण, XML हैweb.config

<system.webServer>
  <rewrite>
    <outboundRules>
      <rule name="Remove RESPONSE_Server" >
        <match serverVariable="RESPONSE_Server" pattern=".+" />
        <action type="Rewrite" value="Company name" />
      </rule>
    </outboundRules>
  </rewrite>
</system.webServer>

URL फिर से लिखना


क्या यह सभी IIS और एएसपी संस्करणों को हैकर से हटाता है
aggie

1
उपरोक्त सुधार वेब पेजों के लिए सही ढंग से काम कर रहा है। लेकिन छवियों / आइकन के लिए सही है अगर 500 आंतरिक सर्वर त्रुटि हुई है तो यह सर्वर दिखा रहा है: Microsoft-IIS / 7.5
मान के

11

Server:शीर्ष लेख को हटाने के लिए Global.asax, इस Application_PreSendRequestHeadersकार्यक्रम को खोजें, बनाएं / बनाएं और निम्नानुसार एक पंक्ति जोड़ें ( बीके के लिए धन्यवाद और यह ब्लॉग कैसिनी / स्थानीय देव पर भी विफल नहीं होगा):

protected void Application_PreSendRequestHeaders(object sender, EventArgs e)
{
    // Remove the "Server" HTTP Header from response
    HttpApplication app = sender as HttpApplication;
    if (null != app && null != app.Request && !app.Request.IsLocal &&
        null != app.Context && null != app.Context.Response)
    {
        NameValueCollection headers = app.Context.Response.Headers;
        if (null != headers)
        {
            headers.Remove("Server");
        }
    }
}

यदि आप Azure / IIS7 पर सभी संबंधित हेडर को हटाने के लिए एक संपूर्ण समाधान चाहते हैं और कैसिनी के साथ भी काम करते हैं, तो इस लिंक को देखें , जो HttpModules या URLScan का उपयोग किए बिना इन हेडर को अक्षम करने का सबसे अच्छा तरीका दिखाता है।


9

यदि आप शीर्ष लेख को हटाना चाहते हैं, तो आप लुकिफायर के उत्तर के एक छोटे संस्करण का उपयोग कर सकते हैं:

using System.Web;

namespace Site
{
    public sealed class HideServerHeaderModule : IHttpModule
    {
        public void Dispose() { }

        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders +=
            (sender, e) => HttpContext.Current.Response.Headers.Remove("Server");
        }
    }
}

और फिर में Web.config:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true">
    <add name="CustomHeaderModule" type="Site.HideServerHeaderModule" />
  </modules>
</system.webServer>

1
यह सबसे उपयुक्त है क्योंकि css / js जैसे संसाधनों में सर्वर हेडर नहीं होगा, यह सर्वर से सर्वर तक कॉन्फ़िगरेशन के बिना पोर्ट करता है और सर्वर प्रतिक्रिया हेडर सिर्फ खाली नहीं होगा, इसे नहीं भेजा जाएगा।
एडम कैविनेस

मैंने ऐसी टिप्पणियां देखी हैं जो runAllManagedModulesForAllRequests = "true" आपके ऐप को धीमा कर देगी और अनुशंसित नहीं है। इसके बजाय एक urlrewrite मॉड्यूल आउटबाउंडRules का उपयोग कर सकता है ताकि सर्वर मूल्य भी स्थिर फ़ाइलों के लिए साफ़ हो सके। britishdeveloper.co.uk/2010/06/…
जूरी

5

HKLM\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\DisableServerHeaderरजिस्ट्री प्रविष्टि को किसी REG_DWORDपर सेट करने का प्रयास करें 1


हमारे सर्वर फ़ार्म के साथ एक विषम परिस्थिति में भाग लें जहाँ यह रजिस्ट्री सेटिंग केवल वही परिवर्तन प्रतीत होता है जो OS के सभी में काम करता है (W2K8, W2K3) जो हम IIS6 और IIS7 दोनों के लिए उपयोग कर रहे हैं।
jerhewet

2
वास्तव में, वर्चुअल मशीन को रिबूट करने के बाद भी, यह मेरे लिए कोई अंतर नहीं कर रहा है। हम Windows Server 2008 R2 मानक पर IIS 7.5, "संस्करण 6.1 (बिल्ड 7601: सर्विस पैक 1)" चला रहे हैं। इसी तरह, मेरा OnPreSendRequestHeadersइवेंट हैंडलर (ऊपर देखें) किसी कारण से, कभी फायरिंग नहीं करता है।
ओवेन ब्लैकर

3
दुर्भाग्य से रजिस्ट्री कुंजी IIS 7.5 पर काम नहीं करती
एंड्रयू सेन्सटोस


2

पर बाद eddiegroves 'जवाब , URLScan के संस्करण के आधार, आप के बजाय पसंद कर सकते हैं RemoveServerHeader=1के तहत [options]

मुझे यकीन नहीं है कि URLScan के किस संस्करण में यह विकल्प जोड़ा गया था, लेकिन यह 2.5 और बाद के संस्करण में उपलब्ध है।


2

मुझे एक लेख मिला जिसमें बताया गया है कि हमें IIS में इसे सेट करने के लिए UrlScan जैसे टूल को एडिट करने और उसका उपयोग करने की आवश्यकता क्यों है। मैंने अपने सर्वरों पर इसका अनुसरण किया और यह काम करता है: http://blogs.msdn.com/b/varunm/archive/2013/04/04/23/remove-unwanted-http-response-headers.aspx । यदि आप केवल UrlScan का उपयोग करते हैं, लेकिन रजिस्ट्री परिवर्तन नहीं करते हैं, तो जिस समय आप वर्ल्ड वाइड पब्लिशिंग सर्विस को रोक रहे हैं, आपका सर्वर HTTP.sys फ़ाइल से सर्वर http प्रतिक्रिया वापस कर देगा। इसके अलावा, यहाँ UrlScan टूल का उपयोग करने के सामान्य गड्ढे हैं: http://msdn.microsoft.com/en-us/library/ff648552.aspx#ht_urlscan_008


2
कृपया अपने कोड को स्टैक ओवरफ्लो पर पोस्ट करें। लिंक बदल सकते हैं और टूट सकते हैं, इसलिए पोस्टिंग कोड बहुत अधिक सहायक है
ब्लंडरिंग फिलोसोफर

2

IIS 10 में, हम ड्रू के दृष्टिकोण के समान समाधान का उपयोग करते हैं, अर्थात:

using System;
using System.Web;

namespace Common.Web.Modules.Http
{
    /// <summary>
    /// Sets custom headers in all requests (e.g. "Server" header) or simply remove some.
    /// </summary>
    public class CustomHeaderModule : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += OnPreSendRequestHeaders;
        }

        public void Dispose() { }

        /// <summary>
        /// Event handler that implements the desired behavior for the PreSendRequestHeaders event,
        /// that occurs just before ASP.NET sends HTTP headers to the client.
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            //HttpContext.Current.Response.Headers.Remove("Server");
            HttpContext.Current.Response.Headers.Set("Server", "MyServer");
        }
    }
}

और स्पष्ट रूप से अपनी परियोजना (ओं) में उस dll का संदर्भ जोड़ें और उस विन्यास में भी मॉड्यूल जिसे आप चाहते हैं:

<system.webServer>
    <modules>
      <!--Use http module to remove/customize IIS "Server" header-->
      <add name="CustomHeaderModule" type="Common.Web.Modules.Http.CustomHeaderModule" />
    </modules>
</system.webServer>

महत्वपूर्ण नोट 1: इस समाधान को एकीकृत के रूप में एक आवेदन पूल सेट की आवश्यकता है;

महत्वपूर्ण नोट 2: वेब ऐप के भीतर सभी प्रतिक्रियाएं इससे प्रभावित होंगी (सीएसएस और जेएस शामिल);


1

मैंने इस पर शोध किया था और URLRrite विधि अच्छी तरह से काम करती है। लगता है कि कहीं भी अच्छी तरह से स्क्रिप्ट में बदलाव नहीं किया जा सकता है। मैंने इसे PowerShell v2 और इसके बाद के संस्करण के साथ संगत किया और IIS 7.5 पर परीक्षण किया।

# Add Allowed Server Variable
    Add-WebConfiguration /system.webServer/rewrite/allowedServerVariables -atIndex 0 -value @{name="RESPONSE_SERVER"}
# Rule Name
    $ruleName = "Remove Server Response Header"
# Add outbound IIS Rewrite Rule
    Add-WebConfigurationProperty -pspath "iis:\" -filter "system.webServer/rewrite/outboundrules" -name "." -value @{name=$ruleName; stopProcessing='False'}
#Set Properties of newly created outbound rule 
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/match" -name "serverVariable" -value "RESPONSE_SERVER"
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/match" -name "pattern" -value ".*"
    Set-WebConfigurationProperty -pspath "MACHINE/WEBROOT/APPHOST"  -filter "system.webServer/rewrite/outboundRules/rule[@name='$ruleName']/action" -name "type" -value "Rewrite"


1

संयोजन में ऊपर प्रस्तावित समाधान ने निम्नलिखित परिवर्तनों के साथ मेरे लिए काम किया। यहां मैं अपना परिदृश्य और समाधान पोस्ट कर रहा हूं।

मेरे लिए मैं निम्नलिखित हेडर निकालना चाहता था:

  • सर्वर
  • एक्स-संचालित-तक
  • एक्स-ASPNET-संस्करण
  • एक्स-AspNetMvc-संस्करण

मैंने इन्हें अपने Global.asax में जोड़ा:

<%@ Application Language="C#" %>
<script runat="server">
    protected void Application_PreSendRequestHeaders()
    {
        Response.Headers.Remove("Server");
        Response.Headers.Remove("X-Powered-By");
        Response.Headers.Remove("X-AspNet-Version");
        Response.Headers.Remove("X-AspNetMvc-Version");
    }
</script>

उपरोक्त घटना ट्रिगर नहीं हो रही थी, इसलिए मैंने इसके लिए web.config का अनुसरण किया और फिर इसने काम किया।

<modules runAllManagedModulesForAllRequests="true" />

और वर्जन हैडर हटाने के लिए मैंने web.config के बाद भी जोड़ा:

<httpRuntime enableVersionHeader="false" />

Web.config में परिवर्तन:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
    <system.web>
        <httpRuntime enableVersionHeader="false" />
    </system.web>
</configuration>

आशा करता हूँ की ये काम करेगा!


0

मैंने यहाँ सभी सामानों की कोशिश की और कई अन्य समान स्टैक ओवरफ्लो थ्रेड्स पर।

मैं थोड़ा सा लटका हुआ था क्योंकि मैं अपने ब्राउज़र कैश को कॉन्फ़िगर परिवर्तन करने के बाद साफ़ करना भूल गया था। यदि आप ऐसा नहीं करते हैं और फ़ाइल आपके स्थानीय कैश में है, तो यह आपको मूल हेडर (डुह) के साथ वापस सेवा देगा।

मैं यह ज्यादातर से काम कर मिल गया को हटाने runAllManagedModulesForAllRequests:

<modules runAllManagedModulesForAllRequests="true">

इसने बाहरी हेडर को अधिकांश से हटा दिया स्थिर फ़ाइलों लेकिन मुझे अभी भी स्वैगर में अपने WebAPI प्रोजेक्ट में कुछ स्थिर फाइलों पर "सर्वर" हेडर मिल रहा था।

मैंने आखिरकार इस समाधान को पाया और लागू किया और अब सभी अवांछित हेडर चले गए हैं:

https://www.dionach.com/blog/easily-remove-unwanted-http-headers-in-iis-70-to-85

जो अपने कोड की चर्चा यहाँ करता है:

https://github.com/Dionach/StripHeaders/releases/tag/v1.0.5

यह एक नेटिव-कोड मॉड्यूल है। यह सर्वर हेडर को हटाने में सक्षम है , न कि केवल मूल्य को खाली करने के लिए। डिफ़ॉल्ट रूप से इसे हटा देता है:

  • सर्वर
  • एक्स-संचालित-तक
  • एक्स-ASPNET-संस्करण
  • सर्वर: Microsoft-HTTPAPI / 2.0 - जो "यदि अनुरोध IIS में पारित करने में विफल रहता है" लौटा दिया जाएगा

-1

IIS 7.5 और संभवतः नए संस्करणों में हेडर पाठ संग्रहीत है iiscore.dll

एक हेक्स संपादक का उपयोग करके, स्ट्रिंग और शब्द "सर्वर" 53 65 72 76 65 72को इसके बाद ढूंढें और उन लोगों को शून्य बाइट्स के साथ बदलें। IIS 7.5 में यह इस तरह दिखता है:

4D 69 63 72 6F 73 6F 66 74 2D 49 49 53 2F 37 2E 35 00 00 00 53 65 72 76 65 72 

कुछ अन्य तरीकों के विपरीत इसका परिणाम प्रदर्शन दंड नहीं होता है। शीर्षलेख को सभी अनुरोधों, यहां तक ​​कि आंतरिक त्रुटियों से भी हटा दिया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.