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?
Please also mark the comments that contributed to the solution of the article
Content-Key: 419327
Url: https://administrator.de/contentid/419327
Printed on: April 26, 2024 at 13:04 o'clock
2 Comments
Latest comment
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.