REST API funktioniert im Browser und über AJAX, schlägt aber über cURL fehl

Ich verwende eine WordPress-REST-API, um den Inhalt einer Seite zu erhalten. Die URL, die ich verwende, ist:

https://sitename.org/wp-json/wp/v2/pages/4322

Wenn ich diese URL im Browser öffne, erhalte ich eine gültige Antwort.

Aber wenn ich versuche, dieselbe URL über cURL zu verwenden, bekomme ich:

konnte keine Verbindung zum Host herstellen

Der Code, den ich benutze, ist dies:

$page_id = 4322; $wp_api_url = "https://sitename.org/wp-json/wp/v2/pages/".$page_id; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, $wp_api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $response = curl_exec($ch); if (FALSE === $response) { echo curl_error($ch); // <---- failing here } else { echo '
'; print_r(json_decode($response, true)); echo '

'; } curl_close($ch);

Was die Frage aufwirft:

  1. Warum funktioniert es dann über einen Browser?
  2. Muss ich beim Aufruf einer API über cURL eine Art Authentifizierung verwenden?

Solutions Collecting From Web of "REST API funktioniert im Browser und über AJAX, schlägt aber über cURL fehl"

Sie können den folgenden Code verwenden und sollten funktionieren, wenn nicht, sollten wir die Serverkonfiguration sehen, um zu sehen, warum. Außerdem können wir den curl_error auf Hinweise prüfen.

 $curl = curl_init(); $page_id = 4322; $wp_api_url = "https://sitename.org/wp-json/wp/v2/pages/".$page_id; curl_setopt_array($curl, array( CURLOPT_URL => $wp_api_url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", )); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl);