CORS preflight request returning HTTP 401 with windows authentication
Here is the solution that uses "URL Rewrite" IIS module. It works perfectly.
1- Stop IIS service (maybe not necessary)
2- Install "web platform installer" from https://www.microsoft.com/web/downloads/platform.aspx
3- Go to "Applications" tab and search for "URL Rewrite" and download it
4- Install this hotfix KB2749660 (maybe not necessary)
5- Open IIS configuration tool, double click "URL Rewrite"
6- Add a new blankrule
7- Give it any name
8- In "Match URL", specify this pattern: .*
9- In "Conditions", specify this condition entry: {REQUEST_METHOD}
and this pattern: ^OPTIONS$
10- In "Action", specify: action type Personalized response
, state code 200
, reason Preflight
, description Preflight
11- Start the server
Now, the server should reply with a 200 status code response to the preflight request, regardless of the authentication.
Remarks: I also disabled all compression, I don't know if it matters.
From AhmadWabbi's answer, easy XML pasting into your web.config:
<system.webServer>
<rewrite>
<rules>
<rule name="CORS Preflight Anonymous Authentication" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{REQUEST_METHOD}" pattern="^OPTIONS$" />
</conditions>
<action type="CustomResponse" statusCode="200" statusReason="Preflight" statusDescription="Preflight" />
</rule>
</rules>
</rewrite>
</system.webServer>