wpforge
Goto Top

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:
$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?

Content-ID: 419327

Url: https://administrator.de/contentid/419327

Ausgedruckt am: 25.11.2024 um 04:11 Uhr

LordGurke
Lösung LordGurke 19.02.2019 um 21:58:16 Uhr
Goto Top
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.
WPFORGE
WPFORGE 19.02.2019 um 22:04:29 Uhr
Goto Top
Danke die Idee war gut ;)