2017-10-05 2 views
0

question CORS à la demande de téléchargement des ressources XHR

xhr.open('GET', 'url/url_filePath=mydownload.zip', true); 
 
    xhr.responseType = 'blob'; 
 
    let that = this; 
 
    
 
    xhr.onload = function(e) { 
 
     if (this.status == 200) { 
 
     let data = this.response; 
 
     const blob = new Blob([data], {type: 'application/octet-stream'}); 
 
     const file = new File([blob], 'mydownload.zip', {type: 'application/zip'}); 
 
     that.han 
 
     that.setState((prevState, props) => { 
 
      return { 
 
      install : false 
 
      }; 
 
     }); 
 
     } 
 
    }; 
 
    xhr.send();

J'ai les lignes ci-dessus de code pour télécharger et télécharger un fichier zip. Je reçois un en-tête 'Access-Control-Allow-Origin' pas présent erreur chaque fois que j'essaye de faire la demande de téléchargement. Je ai contré cela avec une extension de chrome qui gère cela, mais j'ai besoin d'une solution évolutive qui ne nécessitera pas l'extension de chrome. Des pointeurs?

+0

Avez-vous le contrôle du serveur que vous essayez de télécharger? Vous ne pouvez pas vaincre ce côté client d'une manière qui évolue. – Carey

Répondre

1

Les en-têtes CORS envoyés par le serveur indiquent essentiellement les origines autorisées à demander des ressources à partir de ce serveur particulier. De MDN:

Pour des raisons de sécurité, les navigateurs limitent les requêtes HTTP croisées d'origine initiée à partir de scripts. Par exemple, XMLHttpRequest et Fetch suivent la même règle d'origine. Ainsi, une application Web utilisant XMLHttpRequest ou Fetch n'a pu faire que des requêtes HTTP vers son propre domaine .

Pour que votre application Web pour chercher des ressources de cette origine, le serveur doit envoyer un en-tête CORS.

Le format doit être le suivant: Access-Control-Allow-Origin: https://example.com.

+0

ressemble à une URL relative – epascarello

+0

Si c'est une URL relative, il ne devrait pas y avoir de problèmes avec CORS. Aucune violation de la même origine ici. – Carey

+0

@Carey L'URL n'est pas relative. J'essaie de télécharger une ressource de bintray depuis mon hôte local, puis de télécharger la même ressource sur mon serveur. –