Wissensdatenbank (FAQ)

WordPress REST API antwortet nicht: Wo liegt das Problem?

Wenn du nur eine Ladeanimation siehst, aber der eigentliche Inhalt in einem unserer Plugins nicht geladen wird, ist deine WordPress REST API höchstwahrscheinlich nicht erreichbar.

Was ist die WordPress REST API?

Eine REST API ist generell eine standardisierte Methode, die viele Anwendungen im Internet nutzen, um zwischen Server und Client zu kommunizieren. WordPress v4.7 hat die WordPress REST API eingeführt, die es modernen WordPress Plugins erlaubt, diese Standardmethode zur Kommunikation zu nutzen, anstatt den WordPress eigenen Weg der Kommunikation.

Wie kann ich die WordPress REST API in meiner Website aktivieren?

Die WordPress REST API ist standardmäßig in deiner WordPress Website aktiviert. Es ist eine Standard-Kommunikationsmethode und es besteht kein zusätzliches Risiko, sie zu aktivieren, verglichen mit anderen Methoden, wie WordPress-Plugins zwischen Client und Server kommunizieren. Aber einige WordPress Plugins erlauben es dir als WordPress Admin die REST API zu deaktivieren. Der Grund für die Deaktivierung ist meist der Wunsch nach besserer Performance oder Sicherheitsbedenken. Für beide Aspekte ist die Deaktivierung der REST API jedoch meist kein geeignetes Mittel.

Wir kennen die folgenden Plugins, mit denen du die REST API deaktivieren kannst. Standardmäßig deaktiviert keines dieser Plugins die REST API, aber du kannst sie optional deaktivieren:

Zusätzlich kannst du den Zugriff auf die REST API in deiner Webserver-Konfiguration (normalerweise Apache2 oder NGINX) einschränken. Dies kann absichtlich oder versehentlich geschehen, indem du Anfragen ablehnst, die mit /wp-json/ beginnen.

Woher weiß ich, ob die nicht erreichbare REST API mein Problem ist?

Du kannst ganz einfach überprüfen, ob eine nicht erreichbare REST API das Problem ist, wenn du nur eine Ladeanimation in einem devowl.io WordPress Plugin siehst. Folge einfach diesen Schritten:

  1. Öffne einen neuen Tab, in dem du auf deine Website zugreifst.
  2. Klicke mit der rechten Maustaste in die Webseite, um das Panel "Inspect" (Google Chrome) oder "Inspect Element" (Mozilla Firefox) zu öffnen. Hier kannst du auf den Reiter "Console" gehen.
  3. Öffne nun die Seite, auf der du die Ladeanimation siehst, die nicht verschwindet.
  4. In der Konsole solltest du einen rot markierten Eintrag als Fehler sehen, der auf einen Fehler 401, 403, 404 oder 500 hinweist (je nach Plugin/Konfiguration zur Deaktivierung der REST API).
WordPress REST API ist nicht erreichbar: Erkannt in der Browser-Konsole

Wenn du einen Fehler wie diesen siehst, musst du sicherstellen, dass die WordPress REST API wieder erreichbar ist.

Ich möchte die REST API nicht generell aktivieren, sondern für dein Plugin. Ist das möglich?

Dies hängt von der Konfiguration des Plugins ab, das du verwendest, um den Zugriff auf die REST API zu beschränken. Zum Beispiel mit Cerber Security, Anti-spam & Malware Scan kannst du die REST API über Namespaces deaktivieren. Jedes Plugin, das die WordPress REST API nutzt, muss einen Namespace registrieren, in dem alle Endpunkte registriert werden. Wenn du zum Beispiel auf /wp-json/realmedialibrary/v1 in deiner WordPress REST API zugreifst, heißt der Namespace realmedialibrary/v1.

Wir verwenden für die devowl.io WordPress Plugins die folgenden Namespaces:

  • Real Media Library: realmedialibrary/v1
  • Real Physical Media: real-physical-media/v1
  • Real Category Management: real-category-library/v1
  • Real Thumbnail Generator: real-thumbnail-generator/v1
  • Real Custom Post Order: real-custom-post-order/v1
  • Real Cookie Banner: real-cookie-banner/v1 (muss für jeden verfügbar sein, nicht nur für eingeloggte Benutzer)

Neben WordPress Plugins verwenden wir auch noch Third-Party Pakete, welche von unseren Plugins konsumiert werden. Hierfür musst du noch folgende Namensbereiche freigeben:

  • Real Product Manager (Lizenz- und Update-Client, alle Plugins): real-product-manager-wp-client/v1
  • Real Queue (Warteschlangen-Management, aktuell nur in Real Cookie Banner): real-queue/v1

Ich verwende ein Plugin wie "JWT Auth". Ist es kompatibel?

Wenn du ein Plugin wie JWT Auth verwenden möchtest, musst du unsere Plugins ebenfalls auf die Whitelist setzen. Im Falle von JWT Auth musst du den Abschnitt "Whitelisting Endpoints" in dessen README Datei lesen und unsere Plugins zu den erlaubten Endpoints hinzufügen. Die Endpunkte findest du im obigen Absatz.

Ich verwende kein Plugin, sondern z.B. NGINX, um die REST API zu blockieren

Wenn du eine Serverkonfiguration verwendest, z.B. die .htaccess Datei oder eine NGINX-Konfiguration, um den Zugriff auf wp-json zu blockieren, solltest du bestimmte Unterpfade ausschließen. Du kannst diese im Tab "Network" deiner Entwicklertools im Browser nachverfolgen und sie entsprechend freigeben.

Einige unserer Plugins verwenden auch einen Mechanismus zur Verschleierung von URLs, um Ad Blocker zu umgehen (z. B. zur Speicherung der Einwilligung in Real Cookie Banner). Dies kann zum Beispiel so aussehen: /wp-json/jr5ek52mpe4hqt2dhfu/mrvekpi0/0ed0fef9da/consent. Im Gegensatz zu Plugins, die die REST API blockieren, muss eine Serverkonfiguration, die die REST API blockiert, auch den Pfad der verschleierten URL freigeben. Die Verschleierung kann über den Filter DevOwl/Utils/RestObfuscatePath deaktiviert werden.

Permalinks sind fehlerhaft.

Wenn du Apache2 als Webserver verwendest, definiert die .htaccess Datei wie die URLs deiner Webseite aussehen. Diese Datei wird automatisch erstellt und manchmal von Plugins manipuliert. Wenn bei der Erstellung etwas schief gelaufen ist, kann das auch ein Grund sein, warum die WP REST API nicht mehr erreichbar ist.

Du kannst also die Regeln in der .htaccess Datei neu erstellen lassen:

  1. Gehe zu Einstellungen > Permalinks in deinem WordPress Backend.
  2. Speichere die unveränderten Einstellungen. Das Speichern löst aus, dass die Regeln neu geschrieben werden.

Ich kann Daten lesen, aber nicht schreiben?

Du verwendest Real Cookie Banner und kannst deine Lizenz nicht speichern oder Ordner mit Real Media Library erstellen? Ein typischer Text für eine solche Fehlermeldung ist:

Fehlende(r) Parameter: terms (oder ähnliche Feldnamen)

Die am meisten identifizierte Ursache an diesem Verhalten bei bisherigen Kunden war, dass dein Server so konfiguriert ist, URLs ohne endenden Slash / an URLs mit endendem Slash / weiterzuleiten (oder umgekehrt).

Du kannst dies nachvollziehen, indem du via F12 > Netzwerk die jeweiligen Anfragen prüfst, ob eine POST Anfrage weitergeleitet wird. Eine POST Anfrage darf nicht weitergeleitet werden und führt deshalb zu Fehlern, da zu speichernde Daten (quasi deine Eingaben) nicht weitergeleitet werden.

Am besten prüfst du deine .htaccess Datei, ob du /wp-json von den URL-Weiterleitungen ausschließen kannst.

Siehe auch: https://docs.wp-rocket.me/article/131-redirection-to-enforce-trailing-slash-on-urls

WordPress Plugins von devowl.io

Finde hilfreiche Artikel

Themen