CORS aktiviert, aber Antwort für Preflight hat ungültigen HTTP-Statuscode 404 beim POSTEN von JSON

Ich habe gründlich gesucht, kann jedoch unter bestimmten Umständen keine Lösung für dieses Problem finden.

Domänenübergreifende Dienstaufrufe mit Fiddler (POST) werden korrekt ausgeführt und die Daten werden empfangen. Über den Browser (Chrome) erhalte ich jedoch die Meldung "Preflight hat ungültigen HTTP-Statuscode 404".

Ich habe eine Web-API-Anwendung und habe CORS installiert und Folgendes in der Datei web.config sichergestellt:

<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>

Hier ist der Ajax-Aufruf:

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 );
      }
  });

Offensichtlich funktioniert es auf der gleichen Domain und, wie bereits erwähnt, mit Fiddler.

Ich bin mir sicher, dass die Überprüfung der Preflight-Optionen des Browsers für den Inhaltstyp "application / json" fehlschlägt, aber ich bin nicht sicher, wie ich das beheben soll.

Fehlt in der Datei web.config etwas, das ich hinzufügen sollte?

Ich habe versucht, 'content-type' ohne Auswirkung zu entfernen.

Ich hatte HoffnungDieser Artike würde das Problem lösen (es schien vielversprechend), aber der gleiche Fehler ist aufgetreten:

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

Antworten auf die Frage(12)

Ihre Antwort auf die Frage