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-Key: 419327

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

Printed on: April 26, 2024 at 13:04 o'clock

Member: LordGurke
Solution LordGurke Feb 19, 2019 at 20:58:16 (UTC)
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.
Member: WPFORGE
WPFORGE Feb 19, 2019 at 21:04:29 (UTC)
Goto Top
Danke die Idee war gut ;)