Datenübergabe zwischen zwei Domains


Sprint

Erfahrenes Mitglied
#1
Hat sich erledigt. In $path muß die komplette Domain genannt werden, dann geht die Verbindung auch zwischen zwei verschiedenen Domains.

Hallo zusammen,

ich habe hier zwei PHP Scripte, die auf verschiedenen Domains sitzen und Daten austauschen sollen, ohne daß der Browser damit beschäftigt wird. Allerdings behauptet der Sender immer, die Daten könnten nicht korrekt übertragen werden. Was ich sicher weiß ist, daß Verbindung korrekt aufgebaut wird, da "error1" nicht ausgegeben wird, sondern eine Fehlermeldung, die bei der Verarbeitung der Rückgabe erzeugt wird.

Das ist das Sendescript:
PHP:
$fp = fsockopen("ssl://pruefung.zieldomain.de", 443, $errno, $errstr, 30);
if (!$fp){
    die('error1');
}else{
    $path = '/api/vk_register.php';
    $host = 'https://pruefung.zieldomain.de';
    $referer = $_SERVER['SERVER_NAME'];
    fputs($fp, "POST /$path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data_to_send);

    while (!feof($fp))
        $ausgabe[] = fgets($fp);
    fclose($fp);
// Verarbeitung der $ausgabe
}
Und das hier ist das empfangende Script:
PHP:
$token = $_POST['token'];
$vorname = urldecode($_POST['vorname']);
$nachname = urldecode($_POST['nachname']);
$vkkdnr = $_POST['vkkdnr'];
$vglpruefung = $_POST['bbv'];
$absender = $_SERVER["HTTP_REFERER"];

// hier Verarbeitung

$fp = fsockopen($absender, 443, $errno, $errstr, 30);
if (!$fp){
    echo "$errstr ($errno)<br />\n";
}else{
    $path = '/ptreg_send.php';
    $host = $absender;
    $referer = $_SERVER['SERVER_NAME'];
    fputs($fp, "POST /$path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data_to_send) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data_to_send);

    while (!feof($fp)){
        $ausgabe[] = fgets($fp,128)."#";
    }
    fclose($fp);
}
Wenn ich mir die $ausgabe vom Sendescript ausgeben lasse, bekomme ich das hier:
Code:
Array
(
    [0] => HTTP/1.1 400 Bad Request
    [1] => Date: Fri, 17 May 2019 15:03:33 GMT
    [2] => Server: Apache
    [3] => Content-Length: 347
    [4] => Connection: close
    [5] => Content-Type: text/html; charset=iso-8859-1
    [6] =>
    [7] => <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    [8] => <html><head>
    [9] => <title>400 Bad Request</title>
    [10] => </head><body>
    [11] => <h1>Bad Request</h1>
    [12] => <p>Your browser sent a request that this server could not understand.<br />
    [13] => </p>
    [14] => <p>Additionally, a 400 Bad Request
    [15] => error was encountered while trying to use an ErrorDocument to handle the request.</p>
    [16] => </body></html>
)
Merkwürdig ist auch, daß das Ganze früher bei der Entwicklung schon einmal funktioniert hat. Allerdings waren damals beide Scripte auf verschiedenen Subdomains ein und derselben Hauptdomain gelegen. Seit das Sendescript nun auf einer Subdomain einer anderen Hauptdomain liegt, mag es nicht mehr. Beide Hauptdomains liegen aber auf dem selben Server mit der selben IP.

In den Logdateien des Servers sind keine Fehler zu finden.

Hat da jemand eine Idee dazu?
 
Zuletzt bearbeitet:

Neue Beiträge