misterunknown: Cross-Origin-Request und $_SESSION-Array

Beitrag lesen

Moin,

für eine HTML5-App habe ich ein API geschrieben, welches verschiedene Abfragen an den Server regelt. Serverseitig existiert ein Login-Skript (login.php) und ein Skript für das Handling der Abfragen (api.php).

Beim Anmelden wird der Username sowie ein gehashtes Passwort übergeben und serverseitig mit den Angaben abgeglichen; ist alles ok, werden verschiedene Daten in das Session-Array geschrieben. Anschließend wird die Session-ID zurückgegeben. Soweit funktioniert alles. Nun habe ich aber folgendes Problem:

Wenn ich dann von einem Client aus, auf das API-Skript zugreifen will, übergebe ich die Session-ID und versuche sie wiederherzustellen (mit session_name() und session_start()). Soweit scheint das auch zu funkionieren (es kann natürlich auch sein, er erstellt einfach eine neue Session, die er so nennt). Fakt ist: Das Session-Array bleibt leer. Nun habe ich schon einige Zeit herumprobiert, habe aber scheinbar ein Verständnisproblem.
Die Frage ist: Wie schaffe ich es, dass $_SESSION-Array wiederherzustellen?

Hier der relevante Code:
login.php:

if($_POST['password']==$set['password']) {  
	$_SESSION = $set;  
	$_SESSION['auth'] = "OK";  
	echo("{\n\t\"status\": \"OK\",\n\t\"id\" : \"".session_id()."\"\n}");  
}

api.php:

if(isset($_POST['SID'])){ session_name($_POST['SID']); echo("SESSION wiederaufgenommen: ".$_POST['SID']."\n");}  
session_start();  
echo(session_name()."\n"); // hier wird die korrekte Session-ID, die auch übergeben wurde, ausgegeben  
print_r($_SESSION); // ist trotz allem leer :(

Noch ein Hinweis: Zum Entwickeln hatte ich eine Test-Client-Skript auf der selben Subdomain wie login.php und api.php liegen. Da hat alles gepasst, selbst ohne Übergeben der Session-ID, da die Session ja bestehen blieb. Von einer anderen Domain ist es ein Cross-Origin-Request, welchen ich auch erst über eine .htaccess-Datei erlauben musste. Irgendwie muss es ja aber gehen, es gibt ja viele Apps, die per HTTP-Requests mit Servern kommunizieren...

Grüße Marco

--
Ich spreche Spaghetticode - fließend.