我試圖來處理客戶端JavaScript onedrive文件,但首先我需要一種方法來使用XMLHttpRequest下載的文件。 Onedrive支持CORS的很多操作,但對於文件下載到JavaScript存在以下問題:Onedrive CORS下載JavaScript的
如這裏提到的:onedrive rest api manual
我可以發送一個請求:
GET https://apis.live.net/v5.0/FILE_ID/content?access_token=ACCESS_TOKEN
它會回覆一個位置標題,將瀏覽器重定向到文件。問題是,當我通過XHR發送這些請求時,瀏覽器始終發送帶有請求的Origin標頭。對於上面描述的第一個請求,onedrive還會使用Access-Control-Allow-Origin:*標題進行回覆,以便在瀏覽器中允許該請求。但是,當瀏覽器重定向到文件的實際位置時,該資源沒有Access-Control-Allow-Origin標頭,所以XHR請求被瀏覽器拒絕(chrome將Origin標頭設置爲null重定向請求)。
我也嘗試獲取位置,但不自動重定向,然後發送另一個XHR請求,這將設置源標題爲我的網站的域,但結果是相同的。
正如我在開頭提到的,我需要處理JavaScript中的數據,所以我不要求有關如何將文件下載到onedrive硬盤驅動器。我需要在網頁中通過javascript訪問數據。
我知道我可以使用服務器端編程爲我獲取文件數據,然後將其發送到客戶端,但對於我的應用程序,這不是一個選項(至少這不是我要求的此時此刻)。
如果沒有辦法做到這一點,沒有人有一個想法,爲什麼他們會實現他們的API這種方式?允許javascript通過cors和重定向獲取位置,但不包括重定向資源的cors頭。爲什麼不首先否認cors?這是一個錯誤?
我可以確認您的回覆...似乎絕對沒有辦法從瀏覽器中的JavaScript應用程序中下載文件。下載URL沒有CORS支持。 – user1936097 2015-04-04 16:59:58
微軟?任何人都可以在這裏...你能評論你的OneDrive API究竟支持CORS嗎?現在我可以從我的單頁應用程序進行身份驗證,創建和刪除文件,但無法下載!?這似乎是一個不太可能的方式來聲稱CORS支持 – user1936097 2015-04-04 17:01:55
我目前整合OneDrive與我們的服務,但說實話,我決定完全放棄支持它,我們必須通過我們自己的服務器路由數據,這是昂貴的,不好的保護隱私並降低安全性。嚴重的是,整整一年過去了,他們沒有做任何事來解決這樣一個簡單而又直接的問題。 – user1419305 2015-12-03 16:15:42