2016-04-06 4 views
0

Ich schreibe einen Web-Scraper für eine Hybrid-App. Ich habe es mit eckigen geschrieben. Ich muss mich auf einer Website anmelden, um Videos zu holen. Ich kann mich zwar auf Safari einloggen, aber auf Chrome gibt es mir den Access-Control-Allow-Origin-Fehler und ich kann das nicht ändern, da die Seite, die ich versuche zu scrappen, diesen Header nicht bereitstellt. Ich habe versucht, die Websicherheit in Chrome zu deaktivieren, funktioniert aber immer noch nicht. Die App funktioniert gut in Safari, aber wenn ich sie in Ionic verpacke, loggt sie sich nicht auf der Website ein und es werden keine Fehlercodes angezeigt. Dies ist, was der Kopf von meiner HTML-Seite wie folgt aussieht:POST-Anfrage funktioniert auf Safari, aber nicht auf Chrome und Ionic

<meta charset="utf-8"> 
    <!--<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">--> 
    <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-eval' 'unsafe-inline'"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width"> 
    <script src="lib/ionic/js/ionic.bundle.js"></script> 
    <script src="cordova.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> 
    <!--don't need angular script because already loaded somewhere else 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js"></script>--> 
    <script src="webscrape.js"></script> 

Meine POST-Anfrage wie folgt aussieht, in der js-Datei:

login: function(token) { 
    var request = { 
     method: 'POST', 
     url: 'http://bslsignbank.ucl.ac.uk/accounts/login', 
     headers: { 
     'Content-Type': 'application/x-www-form-urlencoded' 
     }, 
     data: 'csrfmiddlewaretoken=' + token + '&email=stackoverflow%40sto.ac.uk&password=dontworry&next=%2F' 
    }; 
    return $http(request); 

Die POST-Anforderung scheint mit jedem csrf Token auf Safari zu arbeiten ab jetzt.

Antwort

0

Öffnen Sie den Chrome-Befehl mit dem Befehl unter (window key + r). Es wird eine chromebrowser öffnen und dann versuchen, Ajax-Request daraus machen:

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security 

Mit Cordova CLI-5.2, müssen Sie Whitelist-Plugin, um erfolgreich AJAX-Anfragen in Android machen implementieren. Sehen Sie sich diese link für weiße Liste Umsetzung pluging

+0

ich auf einem Mac bin, aber ich versuchte, den entsprechenden Befehl und Chrom immer noch nicht funktioniert, gleichen Fehler. Habe schon das Whitelist-Plugin. Die Konfiguration wurde so geändert, dass sie '' enthält, aber es funktioniert immer noch nicht. – Inalek

+0

Verwenden Sie unter Befehl aus dem Terminal für die gleichen: Öffnen/Anwendungen/Google \ Chrome.app --args --user-data-dir = "/ var/tmp/Chrome-Dev-Sitzung" --disable-web-Sicherheit – Krunal

+0

Haben Sie installiert Whitelist-Plugin? – Krunal

0

unten Zeilen in Ihrer config.xml hinzufügen und versuchen

<gap:plugin name="cordova-plugin-whitelist" source="npm" /> 
<access origin="*" /> 
<allow-intent href="*" /> 
<allow-navigation href="*" /> 
+0

Aus irgendeinem Grund gibt die erste Zeile einen Fehler aus. – Inalek

+0

Verwenden Sie Cloud-Build oder lokalen Build? – Krunal

+0

Ich bin mir nicht sicher, aber alles lokal. – Inalek

Verwandte Themen