Ich portiere eine Anwendung von Django zu reinem HTML5/CSS mit AngularJS und habe Probleme mit JSON POST-Anfragen an den TheTVDB-REST-API-Server (https://api.thetvdb.com/).AngularJS Ich versuche, eine JSON POST-Anfrage an einen REST-API-Server zu senden, den ich nicht besitze und den ich nicht kontrolliere, aber CORS-Fehler
return {
login: function(){
return $http({
method: 'POST',
dataType: 'json',
headers: {'Content-Type': 'application/json'},
data: {'apikey':apiKey, 'username': username, 'userkey': identifier},
url: tvdbAuthURL
})
}
}
Und dann bekomme ich diesen Fehler:
Der API-Aufruf in einem Dienst auf AngularJS wird getan
XMLHttpRequest cannot load https://api.thetvdb.com/login/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access. The response had HTTP status code 401.
Ich habe die Anfrage Preflighten aber kein Glück versucht zu vermeiden und da ich dieses Problem nicht mit python requests lib zum Beispiel hatte (ich trigge die Anfrage an die tvDB mit dieser Python-Lib von demselben Rechner, auf dem die angular JS-App läuft, überhaupt keine Probleme) Ich frage mich, ob es einen Weg gibt oder eine andere Anweisung in AngularJS, um zu verhindern, dass CORS-Header gesetzt werden.
TheTVDB fügt CORS nicht zu ihrem Server hinzu, da die meisten ihrer Benutzer Laravel (PHP), Java und Django (Python) -Anwendungen ausführen und ihre Dienste ohne solche CORS-Probleme verwenden.
Ihre Hilfe wird sehr geschätzt.
Danke, Mit freundlichen Grüßen TS
Erstellen Sie einen Proxy in Python – charlietfl
Ich wollte das aus architektonischen Gründen vermeiden. Aber bedeutet das, dass ich von AngularJS eingeschränkt bin, wenn Server keine CORS-Unterstützung bieten? –
Nein, das bedeutet, dass Sie durch die Browsersicherheit eingeschränkt sind. Sie haben keine andere Wahl, als einen Drittanbieter-Proxy zu verwenden – charlietfl