Sto cercando di elaborare i file suedrive nel javascript lato client, ma prima ho bisogno di un modo per utilizzare XMLHttpRequest per scaricare il file. Microsoft Onedrive supporta cors per un sacco di operazioni, ma per il download in javascript c'è il seguente problema:Onedrive cors download in javascript
Come accennato qui: onedrive rest api manual
posso inviare una richiesta a:
GET https://apis.live.net/v5.0/FILE_ID/content?access_token=ACCESS_TOKEN
e risponderà con un'intestazione di posizione che reindirizza il browser al file. Il problema è quando invio queste richieste tramite XHR, il browser invia sempre l'intestazione Origin con la richiesta. Per la prima richiesta che ho descritto sopra, onedrive risponde anche con un'intestazione Access-Control-Allow-Origin: *, quindi la richiesta è consentita nel browser. Tuttavia, quando il browser viene reindirizzato alla posizione effettiva del file, tale risorsa non ha l'intestazione Access-Control-Allow-Origin, quindi la richiesta XHR viene negata dal browser (chrome invia un'intestazione Origin impostata su null per il richiesta di reindirizzamento).
Ho anche provato a ottenere la posizione ma non il reindirizzamento automatico, e quindi inviando un'altra richiesta XHR, questo imposterà l'intestazione di origine al dominio del mio sito, ma il risultato è lo stesso.
Come ho detto all'inizio, ho bisogno di elaborare i dati in javascript, quindi non sto chiedendo come scaricare i file onedrive sul disco rigido. Ho bisogno che i dati siano accessibili da javascript nella pagina web.
So che posso utilizzare la programmazione lato server per ottenere i dati del file per me e quindi inviarlo al client, ma per la mia applicazione questa non è un'opzione (almeno questo non è quello che sto chiedendo a il momento).
Se non c'è modo di farlo, qualcuno ha un'idea del perché avrebbe implementato la propria API in questo modo? Per consentire a javascript di ottenere la posizione tramite cors e reindirizzare ma non includere un'intestazione cors per la risorsa reindirizzata. Perché non solo negare cors, in primo luogo? è un insetto?
Posso confermare la risposta ... non sembra esserci assolutamente alcun modo per scaricare un file da un'app javascript in un browser. Non c'è supporto CORS per l'URL di download. – user1936097
Microsoft? Chiunque là fuori ... puoi commentare in che modo CORS è supportato nella tua API OneDrive? In questo momento posso autenticare, creare ed eliminare file dalla mia app singola, ma non posso scaricare !? Sembra un modo improbabile per rivendicare il supporto CORS – user1936097
Attualmente sto integrando OneDrive con il nostro servizio, ma onestamente, sono in pochi centimetri dalla decisione di abbandonare completamente il supporto per questo, dobbiamo instradare i dati attraverso i nostri server, che è sia costoso, sia cattivo per la privacy e diminuisce la sicurezza. Seriamente, è passato un intero anno e non hanno fatto nulla per sistemare un problema così semplice ma allo stesso tempo vetroso. – user1419305