Json zu unleserlich
Hallo,
ich muss von folder1/test.php zu folder2/test.php weiterleiten.
Dabei enthält der ankommende Request sowohl header daten als auch einen Body. eincah mit header('Location:...') iss also nicht.
ich nutze nun folgendes Script für die Weiterleitung:
der Hinweg scheint auch wunderbar zu funktionieren.
Am Rückweg hakt es.
Das Orginalscript aus folder2 gibt folgendes aus: {"status":true,"msg":"Transaction Completed Succesfully","data":null}
Das redirectscript aus folder1 : ��V*.I,)-V�*)*M�Q�-NW�R
)J�+NL.���Sp��-�I-IMQ.MNN-N+�ɩT�QJI,IT���j��˲E
Was noch interessant ist:
im folder2 Script wird eine Prüfung über die statische Methode einer Klasse durchgeführt. schlägt die Fehl wird ein ähnliches JSON ausgegeben. das kommt dann auch im folder1 korrekt an.
Hat da jemand eine Idee zu?
ich muss von folder1/test.php zu folder2/test.php weiterleiten.
Dabei enthält der ankommende Request sowohl header daten als auch einen Body. eincah mit header('Location:...') iss also nicht.
ich nutze nun folgendes Script für die Weiterleitung:
$request = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$url = str_replace("bdt_api","test",$request);
$data_string = file_get_contents('php://input');
$headers = apache_request_headers();
$header = array();
foreach($headers as $key=>$val)
{
if($key == "Content-Type") $val= "text/html; charset=UTF-8";
if($key == "Content-Length") $val = strlen(data_string);
$header = $key.':'.$val;
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
$result = curl_exec($ch);
curl_close($ch);
die($result);
der Hinweg scheint auch wunderbar zu funktionieren.
Am Rückweg hakt es.
Das Orginalscript aus folder2 gibt folgendes aus: {"status":true,"msg":"Transaction Completed Succesfully","data":null}
Das redirectscript aus folder1 : ��V*.I,)-V�*)*M�Q�-NW�R
)J�+NL.���Sp��-�I-IMQ.MNN-N+�ɩT�QJI,IT���j��˲E
Was noch interessant ist:
im folder2 Script wird eine Prüfung über die statische Methode einer Klasse durchgeführt. schlägt die Fehl wird ein ähnliches JSON ausgegeben. das kommt dann auch im folder1 korrekt an.
Hat da jemand eine Idee zu?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 419327
Url: https://administrator.de/contentid/419327
Ausgedruckt am: 25.11.2024 um 04:11 Uhr
2 Kommentare
Neuester Kommentar
Du reichst alle Header des Clients an CURL durch — also auch "Accept-Encoding: gzip".
Dein CURL empfängt damit dann gzip/bzip-Komprimierte Daten, teilt das aber nicht als Header bei der Ausgabe mit.
Also weiß dein Client nichts davon und zeigt die Binärdaten an, die er bekommen hat.
Entferne alle Header aus deiner foreach-Schleife, die mit "Accept-" beginnen, dann sollte es gehen.
Dein CURL empfängt damit dann gzip/bzip-Komprimierte Daten, teilt das aber nicht als Header bei der Ausgabe mit.
Also weiß dein Client nichts davon und zeigt die Binärdaten an, die er bekommen hat.
Entferne alle Header aus deiner foreach-Schleife, die mit "Accept-" beginnen, dann sollte es gehen.