JavaScript XMLHttpRequest von APP an Server?

SourceCoder

Lt. Commander
Dabei seit
Apr. 2012
Beiträge
1.271
Schönen guten Tag Zusammen,

ich entwickel eine APP und von dort aus möchte ich gern eine PHP Datei ansprechen um zu schauen ob der User in der db vorhanden ist. Doch jedes mal wenn ich die PHP aufrufen möchte bekomme ich diese Fehlermeldung.

XMLHttpRequest cannot load . Origin null is not allowed by Access-Control-Allow-Origin.

Ich muss doch nur die Option aktivieren oder?

Beispiel:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods", "POST, GET, OPTIONS');
header('Access-Control-Allow-Headers *');
 

Rehtaftib

Lieutenant
Dabei seit
Mai 2013
Beiträge
752
Hi,
etwas mehr Infos wären nett.
Womit und auf welchem System entwickelst du die App?
Womit testest du und worauf? VM, Handy? Welches OS?
Wo läuft der Webserver den du ansprechen willst, welcher Server, welches OS?

Prinzipiell kann es schwierig werden direkt php als filerequest aus der app heraus aufzurufen...
 
Zuletzt bearbeitet:

SourceCoder

Lt. Commander
Ersteller dieses Themas
Dabei seit
Apr. 2012
Beiträge
1.271
IDE: Eclipse/Phonegap
System: Windows 7
Testgerät: Android 4.2 Gerät
Server: normaler Apache Server mit PHP 4.3

Ich hab mir überlegt die lege die .js auf dem Server und wenn dann von der .js XMLHttpRequest abgesetzt wird sollte es ja eigentlich kein Probleme gebe da die .php und js gleiche Domain haben.
 

T0a5tbr0t

Lieutenant
Dabei seit
Apr. 2012
Beiträge
581
Der "Access-Control-Allow-Origin" sollte ausreichen. Ich hatte mit einer Phonegap-App mal das gleiche Problem und den header einfach über die htaccess mit gesendet. Dadurch wird die Antwort nicht mehr vom Browser geblockt.
 

SourceCoder

Lt. Commander
Ersteller dieses Themas
Dabei seit
Apr. 2012
Beiträge
1.271
Also "Access-Control-Allow-Origin" in der htaccess und dann sollte es funktionieren?
 

T0a5tbr0t

Lieutenant
Dabei seit
Apr. 2012
Beiträge
581
Wo man den "Access-Control-Allow-Origin: *" Header einbaut ist egal. Hier ist ne Liste.
Per header() in PHP ist es eben nur in der einzelnen PHP-Datei. Ich hatte es in der htaccess zusammen mit einem "Filter" eingebaut, damit es bei allen PHP's mitgesendet wird. War für mich in dem Fall einfach die schnellere Lösung... hängt von der Umgebung ab.
 

SourceCoder

Lt. Commander
Ersteller dieses Themas
Dabei seit
Apr. 2012
Beiträge
1.271
Ich habe nun "header('Access-Control-Allow-Origin: *');" in der PHP Datei eingebaut doch ich bekomme immer noch die Fehlermeldung.

In der PHP Datei werden noch zwei weitere Dateien inkludiert muss ich "header('Access-Control-Allow-Origin: *');" auch in den einbauen?

include ("../verbindung.php");
require_once 'class.SQL.php';

Wie sehen deine Filter aus wenn ich fragen darf, möchte nicht Server für alle bösen Menschen öffnen.
 

T0a5tbr0t

Lieutenant
Dabei seit
Apr. 2012
Beiträge
581
Steht die Header Funktion (ein mal) ganz oben in der PHP-Datei (bevor ein Inhalt ausgegeben wird?)
Vllt. mal das JS im Browser Lokal ausführen und gucken ob die Header in der Antwort stimmen.

Der Fehler sagt ja "Origin null is not allowed by Access-Control-Allow-Origin.". Der ist "null", da bei Phonegap die Dateien praktisch lokal auf dem Gerät liegen. Und wenn sich der Origin mit dem vom Server unterscheidet wird die Antwort geblockt (eigentlich ne sehr dumme Sicherheits-Regel) und mit * gibt man alle Origins frei...
So etwa kann das in der htaccess aussehen:
Code:
<FilesMatch "\.php$">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>
Du hast ja auch noch ein paar andere Header im ersten Post vllt. helfen die noch (wobei ich die nie gebraucht habe)
 
Top