Удалить заголовки Etag и Last-Modified из IIS - PullRequest
4 голосов
/ 11 октября 2010

Знаете ли вы, что можно предотвратить повторную проверку файлов в кэше браузера и последующий ответ 304 , полностью удалив заголовки ответов ETag и Last-Modifed?

Конечно, это легко в Apache, но так же ясно, как "грязь" в IIS 6. Кто-нибудь знает, как удалить оба этих заголовка в IIS?

1 Ответ

7 голосов
/ 11 октября 2010

Программным способом является использование модуля HTTP, что-то вроде этого (на основе ответа SO Люка ):

namespace HttpModules
{
    using System;
    using System.Web;

    public class RemoveExtraneousHeaderModule : IHttpModule
    {
        /// <summary>
        /// Initializes a module and prepares it to handle requests.
        /// </summary>
        /// <param name="context">Provides access to the request context.</param>
        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += this.OnPreSendRequestHeaders;
        }

        /// <summary>
        /// Disposes of the resources (other than memory) used by this module.
        /// </summary>
        public void Dispose()
        {
        }

        /// <summary>
        /// Event raised just before ASP.NET sends HTTP headers to the client.
        /// </summary>
        /// <param name="sender">Event source.</param>
        /// <param name="e">Event arguments.</param>
        protected void OnPreSendRequestHeaders(object sender, EventArgs e)
        {
            NameValueCollection headers = HttpContext.Current.Response.Headers;
            headers.Remove("Server");
            headers.Remove("ETag");
            headers.Remove("X-Powered-By");
            headers.Remove("X-AspNet-Version");
            headers.Remove("X-AspNetMvc-Version");
        }
    }
}

Модуль устанавливается через web.config,под <system.web> для IIS 6 и под <system.webServer> для IIS 7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...