Spoofing IE10’s User Agent in IIS for IE11 Support in SharePoint 2013

As I explained in my previous post, IE 11 doesn’t work out of the box with SharePoint 2013. It seems that my excitement was short lived with the “fix” from the previous post. I didn’t realize that although I took my domain out of Compatibility View, I still happened to have “Display Intranet sites in compatibility view” checked. I found this out from a co-worker as I had to deal with another IE 11 issue. This news bummed me out and led me to a few failed attempts at addressing this issue (writing an HTTPModule and trying to use reflection in order to change the user agent from the request, modifying the navigator object in JavaScript to change the getter method for the userAgent). Luckily, my fix doesn’t mean I necessarily have to throw my changes away from the previous post.

For the fix, I decided to use the URL Rewrite Module for IIS. The rule I created is a simple set up and takes only a few minutes to create.

First, open up IIS after the URL Rewrite Module is installed. Click on the particular IIS site that represents your SharePoint 2013 Web Application, then click on the Url Rewrite button in the Features View.

urlrewrite1


Next, click the View Server Variables link from the Actions pane on the right. From here we need to add HTTP_USER_AGENT into the list of Allowed Server Variables by clicking Add in the Actions Pane.

urlrewrite2


When this step is complete, click the Back to Rules button from the Actions pane then press Add Rules(s). Select Blank rule under the Inbound rules section (the first selection on the top left) and enter/choose the following values:

Name: This rule can be named anything you wish for it to be named

Match URL

Requested URL: Matches the Pattern

Using: Regular Expressions

Pattern: .*


Conditions

Logical grouping: Match All

Click Add Condition and then enter the following data:

Condition input: {HTTP_USER_AGENT}

Check if input string: Matches the Pattern

Pattern: .*Trident/([7-9]|0*[1-9]\d+).*(rv:1[1-9]).*


urlrewrite3


Server Variables

Click Add and then enter the following data:

Server variable name: HTTP_USER_AGENT

Value: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)

Replace the existing value: Checked




Action

Action type: None

After following these steps, press Apply in the Actions pane. Try editing a page in IE 11 without Compatibility View enabled now and be amazed that it actually enters Design View. This actually “fixes” the issue with external users unable to edit pages and view calendars correctly with IE 11. As explained before, Compatibility View can “solve” the IE 11 issue, but I would rather refrain from immediately putting an entire domain in Compatibility View when one site doesn’t work. Also, if your site is externally accessible, it requires users to know that they need to put the site into Compatibility View.


Leave comments if this solution has worked for you and also if it hasn’t.