Ich möchte JSON aus einem PHP-Skript zurückgeben.
Soll ich das Ergebnis einfach wiedergeben? Muss ich die Content-Type
Kopfzeile?
Ich möchte JSON aus einem PHP-Skript zurückgeben.
Soll ich das Ergebnis einfach wiedergeben? Muss ich die Content-Type
Kopfzeile?
Es ist auch gut, die Zugriffssicherheit einzustellen - ersetzen Sie einfach * durch die Domäne, die Sie erreichen wollen.
<?php
header('Access-Control-Allow-Origin: *');
header('Content-type: application/json');
$response = array();
$response[0] = array(
'id' => '1',
'value1'=> 'value1',
'value2'=> 'value2'
);
echo json_encode($response);
?>
Hier finden Sie weitere Beispiele dafür: Wie umgeht man Access-Control-Allow-Origin?
Was bedeutet es, wenn das nicht funktioniert? Um zum Beispiel nur Aufrufe von CodePen zuzulassen, habe ich versucht header('Access-Control-Allow-Origin: https://cdpn.io');
aber ich kann die Seite immer noch über meinen eigenen Browser laden.
header_remove
und das explizite Setzen der http-Antwort ist eine gute Idee; obwohl das Setzen von status und dann http_response redundant erscheint. Möglicherweise sollten Sie auch eine exit
Erklärung bis zum Ende. Ich habe Ihre Funktion mit der von @trincot kombiniert: stackoverflow.com/a/35391449/339440
Mit JS FetchAPI, könnten Sie Ihre Antwort auf, wie gesendete Daten zu empfangen erweitern? fetch(...).then(res => res.json()).then(data => /* do smth */).catch(e => console.error(e))
funktioniert hervorragend, wenn die Reaktion 200
aber wie bekommt man $data
において 500
um den genauen Fehler anzuzeigen, der in PHP in der .catch()
Methode in JS?
Wie oben erwähnt:
header('Content-Type: application/json');
aber bedenken Sie, dass :
Ajax wird kein Problem haben, json zu lesen, auch wenn dieser Header nicht verwendet wird, außer wenn Ihr json einige HTML-Tags enthält. In diesem Fall müssen Sie den Header als application/json festlegen.
Stellen Sie sicher, dass Ihre Datei nicht in UTF8-BOM kodiert ist. Dieses Format fügt ein Zeichen am Anfang der Datei hinzu, so dass Ihr header()-Aufruf fehlschlagen wird.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
Setzen Sie immer den Content-Type-Header für json, um XSS zu vermeiden. Beachten Sie den Unterschied zwischen diesen beiden Skripten: <?php print json_encode(["someKey" => "<body onload=alert(1)>"]); ?> und <?php header("Content-Type: application/json");print json_encode(["someKey" => "<body onload=alert(1)>"]); ?> Für weitere Informationen siehe: security.stackexchange.com/questions/169427/ [Kann keine Antwort einreichen, da Rufvoraussetzung]