CORS включен, но ответ на предпечатную проверку имеет неверный код состояния HTTP 404 при отправке JSON

Я тщательно искал, но не могу найти решение этой проблемы в моих конкретных обстоятельствах.

Междоменные сервисные вызовы с использованием Fiddler (POST) выполняются правильно, и данные принимаются. Тем не менее, через браузер (Chrome) я получаю сообщение «предпечатная проверка имеет недопустимый код состояния HTTP 404»

У меня есть приложение Web API, я установил CORS и убедился, что в файле web.config присутствует следующее:

<system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integra,ted-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

Вот вызов Ajax:

var secretKey = 'difusod7899sdfiertwe08wepifdfsodifyosey',
    url = 'http://api.intrinsic.co.uk/api/v1/PTS/ActiveDrivers?api_key=098werolllfWnCbPGAuIXVOJidDHRfYcgxImMlxTXopuekXrSOqOWzEAIdeNTWGPQPpyHxgVGsFysGFKPzq';

  jQuery.ajax ({
      url: url,
      type: "POST",
      data: JSON.stringify({ secretKey: secretKey}),
      dataType: "json",
      contentType: "application/json; charset=utf-8",
      success: function(data){
          var content = "<table class=\"container\"><thead><tr><th>Driver Number</th><th>Timestamp</th><th>VRN</th><th>Latitude</th><th>Longitude</th><th>Track Link</th></tr></thead><tbody>";
          $.each(data.ActiveDrivers.DriverLocationStatus, function (index, element) {
              content += "<tr><td>" + element.DriverNumber + "</td>";
              content += "<td>" + dateFormat(element.Timestamp, "d/m/yy") + " " + dateFormat(element.Timestamp, "h:MM TT") + "</td>";
              content += "<td>" + element.VRN + "</td>";
              content += "<td>" + element.CurrentLatitude + "</td>";
              content += "<td>" + element.CurrentLongitude + "</td>";
              content += "<td><a href=\"https://www.google.co.uk/maps/place//@" + element.CurrentLatitude + "," + element.CurrentLongitude + ",15z/\" target='_blank'>Track &raquo;</a></td></tr>";
          });
          content += "</tbody></table>";
          $( "#result" ).html( content );
      }
  });

Очевидно, что отлично работает в одном домене и, как уже упоминалось, работает с использованием Fiddler.

Я уверен, что это проверка браузера OPTIONS перед проверкой, которая не работает для типа контента 'application / json', но я не уверен, как это исправить.

Чего-то не хватает в файле web.config, который я должен добавить?

Я попытался удалить тип контента без каких-либо последствий.

Я надеялсяЭта статья решит проблему (она казалась многообещающей), но встречается та же ошибка:

XMLHttpRequest cannot load [URL]. Response for preflight has invalid HTTP status code 404

Ответы на вопрос(6)

Ваш ответ на вопрос