2017-01-25 1 views
1

Ich bin gerade dabei, etwas zu entwickeln und in Django CORS Probleme zu laufen. Ich habe this verfolgt, um zu versuchen, dieses Problem zu lösen, aber ich habe kein Glück, wenn ich eine Whitelist einbauen will. Ich bekomme ständig eine "Nein 'Access-Control-Allow-Origin'-Header ist auf der angeforderte Ressource. " wenn ich versuche, eine GET-Anfrage an die Datenbank zu senden.Django CORS Ausgaben

Speziell entwickle ich eine eckige Web-App, die auf einer anderen Domain (AWS S3) gehostet wird, während die Django db auf AWS EC2 ist. Das Whitelisting funktioniert lokal, wenn ich zum Beispiel localhost: 3000 auf die weiße Liste setze, scheint aber nicht zu funktionieren, wenn ich die s3-Domain auf die weiße Liste setze. Es funktioniert, wenn ich den Django so konfiguriere, dass alles erlaubt ist, aber ich möchte das aus Sicherheitsgründen nicht machen. Ich versuche gerade, der Domain einige reguläre Ausdrücke hinzuzufügen, um die verschiedenen auf der Website verfügbaren Routen zu erlauben, aber das erklärt immer noch nicht, warum localhost: 3000 funktioniert, wenn es mehr von localhost ist: 3000/#/page/page2.

Mein JavaScript-Code ist wie folgt:

$http({ 
    url: "api/url", 
    method: 'GET', 
    withCredentials: true, 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/x-www-form-urlencoded', 
     'Authorization': 'accesstoken' 
    } 
    }).then((response) => { 
    $scope.response = response; 
    }, (data) => { 
    $scope.response = data; 
    }) 

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Antwort

0

Offenbar funktioniert die Regex-Whitelist. Befolgen Sie die Dokumentation zu django cors-Headern, fügen Sie einfach die Regex für Ihre Domain ein und sie funktioniert für alle Routen, auf die Sie versuchen, auf die Django-Datenbank zuzugreifen. Nicht sicher, warum der localhost funktionierte, aber das tat er nicht, noch fügte er die Route speziell als Whitelist hinzu, aber ich beschwere mich nicht.