I recently wrote about a new feature of Google Chrome called Instant Browsing. You can turn it on or off Basic tab of the Options page in Chrome.
If you are a web site owner/administrator and are concerned about the impact it might have on your web server to have a deluge of requests going to your server that the end user is probably not really interested in, or having a number of requests going to your server that result in a 404 resource not found because the half formed URL in the “omnibox” does not actually resolve to a real page then you can opt out.
For folks running ASP.NET (both WebForms and MVC) I’ve created a simple HTTP Module that will opt your site out if it encounters requests from Chromes’ Instant Browsing.
You can download the Module here: Instant Browsing HTTP Module V1. And to activate it in your application you need to add the DLL file as a reference to your application and then add the bolded line to your web.config.
<configuration> <system.web> <httpModules> <add name="InstantBrowsingOptOut" type="InstantBrowsing.InstantBrowsingOptOut, InstantBrowsing"/> </httpModules> </system.web> </configuration>
The Code
If you prefer, you can add the following source to your application and compile it yourself.
using System; using System.Collections.Specialized; using System.Web; namespace InstantBrowsing { public class InstantBrowsingOptOut : IHttpModule { public void Dispose() { // Nothing to dispose. Required by IHttpModule } public void Init(HttpApplication context) { context.BeginRequest += new EventHandler(BeginRequest); } void BeginRequest(object sender, EventArgs e) { HttpApplication application = (HttpApplication)sender; string headerValue = GetPurposeHeaderValue(application.Request); if (HeaderValueDoesntExist(headerValue)) return; if (PreviewMode(headerValue)) Issue403Forbidden(application.Response); } private bool PreviewMode(string value) { return value.ToLowerInvariant().Contains("preview"); } private bool HeaderValueDoesntExist(string value) { return string.IsNullOrEmpty(value); } private string GetPurposeHeaderValue(HttpRequest request) { NameValueCollection headers = request.Headers; return headers["X-Purpose"]; } private void Issue403Forbidden(HttpResponse response) { response.Clear(); response.StatusCode = 403; response.End(); } } }
And to activate it in your application you need to add the bolded line to your web.config.
<configuration> <system.web> <httpModules> <add name="InstantBrowsingOptOut" type="InstantBrowsing.InstantBrowsingOptOut, InstantBrowsing"/> </httpModules> </system.web> </configuration>
Note that the second “InstantBrowsing” in the type attribute is the assembly, so if you’ve put it in an assembly with a different name you’ll need to change the type attribute to reflect that.