CORS pre-flight OPTIONS request depends on Content-Type
The spec shows that an XHR request only sends the OPTIONS pre-flight request with some content-types. It does not send an OPTIONS request with application/x-www-form-urlencoded
but does with form-data or raw JSON. This knowledge can save a lot of pain when trying to call an MVC endpoint with an XHR request.