I had recently run into a case where I was using a simple Windows Auth in web.config with CORS.
I was struggling with why I kept receiving 401's on OPTIONS request. I know that OPTIONS don’t expect cookies or additional headers for the preflight so I was not authenticating even when withCredentials is enabled.
I had expected IIS to atleast carry over credentials but no luck. So a fix is to enable the OPTIONS verb to anonymous users as below:
Sample web.config
<system.web>
...
<authentication mode="Windows" />
<authorization>
<!-- This will enable OPTIONS for everyone -->
<allow verbs="OPTIONS" users="?" />
...
</authorization>
...
</system.web>