Ich versuche, die Uber-API in meinem JavaScript-Client zu verwenden.Ubers API gibt 404 während der CORS-Preflight-Anforderung zurück
Ich bin mir bewusst, dass dieser CORS beinhaltet, da mein Mandant den Uber-API direkt über AJAX zugreifen.
Im Uber-Entwickler-Dashboard legte ich meine Origin-URI richtig fest. Dann stellte ich das einfachste Beispiel auf, das ich finden konnte. Das kam von Uber die docs:
<!DOCTYPE html>
<html>
<head>
<title>Uber API Demo</title>
</head>
<body>
<script>
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.uber.com/v1.2/products?latitude=37.7759792&longitude=-122.41823');
xhr.setRequestHeader("Authorization", "Token <ServerToken>");
xhr.send();
</script>
</body>
</html>
in Chrome Dev-Tools auf der Konsole sucht, ist hier, was ich sehe:
Und interessanteste, auf die Registerkarte Netzwerk:
Mein Browser meines HTTP POST in eine HTTP-OPTIONS-Anforderung (Teil der CORS Preflight in th definiert verändert e holen spec), die es aussieht wie Uber nicht unterstützt. Der Uber-Server sollte mit den Antwortheadern antworten und meinen Client autorisieren, seine API-Anfrage zu beenden. Stattdessen werden sie einen 404.
Zusammengefasst Rückkehr:
- Uber die docs sagen, sie CORS unterstützen.
- Ich habe meine Herkunft URI korrekt in Uber's Developer Dashboard
- Die CORS-Spezifikation sagt, wenn ich einen HTTP-POST mit Authorization-Header, das ist eine nicht einfache Anfrage und erfordert die HTTP-OPTIONEN Preflight.
- Mein Browser tut genau das, eine Anforderung mit HTTP-Methode Sendeoptionen, die den Origin-Header enthalten (die die Herkunft URI Satz in meiner Uber Entwickler-Dashboard übereinstimmt.)
- Uber kehrt Status 404 (nicht gefunden)
Wer weiß, was hier vor sich geht?
Wenn alles andere fehlschlägt, richten Sie einen Proxy auf einem Server ein, den Sie steuern – charlietfl