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