我試圖在我的JavaScript客戶端中使用Uber API。優步的API在CORS預檢請求期間返回404
我知道這涉及到CORS,因爲我的客戶端將通過AJAX直接訪問Uber API。
在優步開發人員儀表板中,我正確設置了自己的Origin URI。然後,我設定了我能找到的最簡單的例子。在此之前,從尤伯杯的文檔:
<!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>
綜觀Chrome開發工具的控制檯,這是我所看到的:
而且,最有趣的,網絡標籤:
我的瀏覽器正在將我的HTTP POST更改爲HTTP OPTIONS請求(部分CORS預檢定義在第e獲取規格),看起來Uber不支持。優步的服務器應該回復響應頭,授權我的客戶端完成其API請求。相反,他們正在返回一個404
總結:
- 尤伯杯的文件說,他們支持CORS。
- 我在Uber的開發人員儀表板中正確設置了我的Origin URI
- CORS規範說明如果我使用授權標頭進行HTTP POST,這是一個非簡單請求,並且需要HTTP OPTIONS預檢。
- 我的瀏覽器正在做確切的是,使用包括起源頭HTTP方法OPTIONS發送請求(其匹配的來源URI集合在我的烏伯開發人員信息中心。)
- 烏伯被返回狀態404(未找到)
任何人都知道這裏發生了什麼?
當所有其他操作失敗時,在您控制的服務器上設置代理 – charlietfl