2017-10-05 3 views
0

CORS Problem mit xhr Ressource Download-Anfrage

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();

Ich habe die obigen Zeilen Code zum Herunterladen und eine Zip-Datei hochladen. Ich bekomme einen 'Access-Control-Allow-Origin'-Header nicht vorhanden Fehler jedes Mal, wenn ich versuche, die Anfrage zum Download zu machen. Ich habe dem mit einer Chrome-Erweiterung entgegengewirkt, die das beherrscht, aber ich brauche eine skalierbare Lösung, die keine Chrome-Erweiterung benötigt. Irgendwelche Zeiger?

+0

Haben Sie die Kontrolle über den Server, von dem Sie herunterladen möchten? Sie können diese Client-Seite nicht in einer Weise besiegen, die skaliert. – Carey

Antwort

1

CORS-Header, die vom Server gesendet werden, geben grundsätzlich an, welcher Ursprung Ressourcen von diesem bestimmten Server anfordern darf. Von MDN:

Aus Sicherheitsgründen Browser beschränkt Cross-Origin HTTP in Skripten initiiert anfordert. Beispiel: XMLHttpRequest und Fetch folgen der Richtlinie für denselben Ursprung. So konnte eine Webanwendung, die XMLHttpRequest oder Fetch verwendet, nur HTTP-Anforderungen an ihre eigene -Domäne senden.

Um Ihre Web-Anwendung zu ermöglichen, von diesem Ursprung zu holen Ressourcen, muss der Server eine CORS-Header senden.

Das Format sollte folgen: Access-Control-Allow-Origin: https://example.com.

+0

sieht aus wie eine relative URL zu mir – epascarello

+0

Wenn es eine relative URL ist, sollte es keine Probleme mit CORS obwohl. Keine gleiche Ursprungsverletzung dort. – Carey

+0

@Carey Die URL ist nicht relativ. Ich versuche, eine Ressource von bintray von meinem lokalen Host herunterzuladen und dann dieselbe Ressource auf meinen Server hochzuladen. –