• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] XOrigin-Abfrage schlägt fehl

T

ToM80

Guest
Hallo zusammen,

ich hänge mal wieder fest.
Versuche mich gerade an einer APP (Test laufen mittels Phonegap) die auf JQUERY zurück greift und mit einem externen Server (in der Entwicklung XAMPP) kommunizieren soll.
Soweit alles standard.
Um CrossOrigin zu verwenden, nutze ich im HTML der aufrufenden App:

Code:
	$.ajax({
		url: "https://192.168.1.21/qdgs/rest/login.rest.php",
		crossDomain: true,
		type: 'POST',
		data: 'json',
		data: {
			action:"login",
			userName: $('#inpUserName').val(),
			userPass: $('#inpUserPass').val(),
			secKey: $('#hidSecKey').val()
		}),
		cache: "false",
		success: (function(html) {
			if (html==1) {
				self.location.href='play.html?secKey='+$('#hidSecKey').val();
			} else {
				alert('login Fehler: '+html);
				//showError();
			}
		}),
		error: (function(html) {
			alert('error on login: '+html);
		})
          });

Das Gegenstück auf dem Server hat folgenders im Kopf der Seite stehen:
PHP:
if (isset($_SERVER['HTTP_ORIGIN'])) {
	header('Access-Control-Allow-Origin: *');
	header('Access-Control-Allow-Methods: GET, POST');
	header('Access-Control-Max-Age: 1000');
	header('Access-Control-Allow-Headers: Content-Type');
}

Zusätzlich ist in XAMPP Config dieser Block auskommentiert:
Code:
# New XAMPP security concept
#
#<LocationMatch "^/(?i:(?:xampp|security|licenses|phpmyadmin|webalizer|server-status|server-info))">
#        Require local
#	ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var
#</LocationMatch>

In meinen Augen sollte dies doch alles sein, damit XOrigin möglich ist. Leider bekomme ich aber bei Abfragen folgende Fehlermeldung:
Code:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://192.168.1.21/qdgs/rest/login.rest.php. This can be fixed by moving the resource to the same domain or enabling CORS.

Was habe ich übersehen?

Danke und Grüße

ToM80

- - - Aktualisiert - - -

Keiner eine Idee? :(
 
Hi,

die Angabe, dass das erlaubt ist, muss doch eigentlich auch auf der Gegenseite passieren und nicht auf dem Rechner, der die Anfrage startet, oder?

Ich habe mit sowas aber noch keinerlei Erfahrung gemacht und habe das einfach mal in Google eingegeben, raus kam u.a. folgendes: jquery - Cross-Origin Request Blocked on - Stack Overflow

Hilft dir das weiter?
 
Passiert ja auch auf der Serverseite. Der Proxyweg fällt leider dadurch weg, da mir auf Seiten des Clients kein PHP zur Verfügung steht.
 
Ich hab' CORS mal für das Verzeichniss, wo mein Framework drin sitzt aktiviert. Dafür hat das in der .htaccess gereicht:
Code:
<filesMatch "\.js$">
ForceType 'text/javascript'
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "GET, OPTIONS"
</filesMatch>

Ich glaube bei dir fehlt die Methode "OPTIONS"... hab' da irgendwas im Hinterkopf, dass das unbedingt nötig war.
 
Hi kkapsner,

danke für den Tip, leider hat auch das hinzufügen von "OPTIONS" nicht gelangt.
Bei mir steht nun folgendes:
PHP:
header('Access-Control-Allow-Origin: "*"');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');
 
Schau' dir nicht an, was in der PHP-Datei drin steht, sondern was die Seite wirklich an HTTP-Headern an den Browser sendet.
Du kannst dir zum Vergleich ja mal ansehen, was http://kkjs.kkapsner.de/modules/kkjs.load.js an Headern liefert. Die funktioniert nämlich.

PS: "*" ist falsch in Origin - die Anführungsstriche müssen weg.
 
Zurück
Oben