{"id":504,"date":"2021-01-21T17:15:58","date_gmt":"2021-01-21T16:15:58","guid":{"rendered":"https:\/\/devowl.io\/?post_type=knowledge-base&#038;p=504"},"modified":"2023-05-22T11:14:44","modified_gmt":"2023-05-22T09:14:44","slug":"wordpress-rest-api-does-not-respond","status":"publish","type":"knowledge-base","link":"https:\/\/devowl.io\/de\/wissensdatenbank\/wordpress-rest-api-antwortet-nicht\/","title":{"rendered":"WordPress REST API antwortet nicht: Wo liegt das Problem?"},"content":{"rendered":"<section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p>Wenn du nur eine Ladeanimation siehst, aber der eigentliche Inhalt in einem unserer Plugins nicht geladen wird, ist deine WordPress REST API h\u00f6chstwahrscheinlich nicht erreichbar.<\/p>\n<h2>Was ist die WordPress REST API?<\/h2>\n<p class=\"translation-block\">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 <a href=\"https:\/\/developer.wordpress.org\/rest-api\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress REST API<\/a> eingef\u00fchrt, die es modernen WordPress Plugins erlaubt, diese Standardmethode zur Kommunikation zu nutzen, anstatt den WordPress eigenen Weg der Kommunikation.<\/p>\n<h2>Wie kann ich die WordPress REST API in meiner Website aktivieren?<\/h2>\n<p>Die WordPress REST API ist standardm\u00e4\u00dfig in deiner WordPress Website aktiviert. Es ist eine Standard-Kommunikationsmethode und es besteht kein zus\u00e4tzliches 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\u00fcr die Deaktivierung ist meist der Wunsch nach besserer Performance oder Sicherheitsbedenken. F\u00fcr beide Aspekte ist die Deaktivierung der REST API jedoch meist kein geeignetes Mittel.<\/p>\n<p>Wir kennen die folgenden Plugins, mit denen du die REST API deaktivieren kannst. Standardm\u00e4\u00dfig deaktiviert keines dieser Plugins die REST API, aber du kannst sie optional deaktivieren:<\/p>\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wordfence\/\" target=\"_blank\" rel=\"noopener noreferrer\">Wordfence<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/better-wp-security\/\" target=\"_blank\" rel=\"noopener noreferrer\">iThemes Security (formerly Better WP Security)<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/all-in-one-wp-security-and-firewall\/\" target=\"_blank\" rel=\"noopener noreferrer\">All In One WP Security &amp; Firewall<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/sucuri-scanner\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sucuri Security<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/anti-spam\/\" target=\"_blank\" rel=\"noopener noreferrer\">Titan Anti-spam &amp; Security<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-cerber\/\" target=\"_blank\" rel=\"noopener noreferrer\">Cerber Security, Anti-spam &amp; Malware Scan<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-simple-firewall\/\" target=\"_blank\" rel=\"noopener noreferrer\">Shield Security<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-hide-security-enhancer\/\" target=\"_blank\" rel=\"noopener noreferrer\">WP Hide &amp; Security Enhancer<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/bulletproof-security\/\" target=\"_blank\" rel=\"noopener noreferrer\">BulletProof Security<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/disable-json-api\/\" target=\"_blank\" rel=\"noopener noreferrer\">Disable REST API<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/ninjafirewall\/\" target=\"_blank\" rel=\"noopener noreferrer\">NinjaFirewall (WP Edition)<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/hide-my-wp\/\" target=\"_blank\" rel=\"noopener noreferrer\">Hide My WP Ghost<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/hide-my-wp\/\" target=\"_blank\" rel=\"noopener noreferrer\">Perfmatters<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/swift-performance-lite\/\" target=\"_blank\" rel=\"noopener noreferrer\">Swift Performance<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/clearfy\/\" target=\"_blank\" rel=\"noopener noreferrer\">Clearfy<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/oauth2-provider\/\">WP Oath Server<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/password-protected\/\">Password Protected<\/a><\/li>\n<li><a href=\"https:\/\/www.cloudflare.com\/waf\/\" target=\"_blank\" rel=\"noopener\">Cloudflare WAF (Web Application Firewall)<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-rest-api-controller\/\">WP REST API Controller<\/a><\/li>\n<\/ul>\n<p class=\"translation-block\">Zus\u00e4tzlich kannst du den Zugriff auf die REST API in deiner Webserver-Konfiguration (normalerweise Apache2 oder NGINX) einschr\u00e4nken. Dies kann absichtlich oder versehentlich geschehen, indem du Anfragen ablehnst, die mit <code>\/wp-json\/<\/code> beginnen.<\/p>\n<h2>Woher wei\u00df ich, ob die nicht erreichbare REST API mein Problem ist?<\/h2>\n<p>Du kannst ganz einfach \u00fcberpr\u00fcfen, 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:<\/p>\n<ol>\n<li>\u00d6ffne einen neuen Tab, in dem du auf deine Website zugreifst.<\/li>\n<li>Klicke mit der rechten Maustaste in die Webseite, um das Panel \"Inspect\" (Google Chrome) oder \"Inspect Element\" (Mozilla Firefox) zu \u00f6ffnen. Hier kannst du auf den Reiter \"Console\" gehen.<\/li>\n<li>\u00d6ffne nun die Seite, auf der du die Ladeanimation siehst, die nicht verschwindet.<\/li>\n<li>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).<\/li>\n<\/ol>\n<\/div><\/div><div class=\"w-image us_custom_2dbf7b3f align_none\"><a ref=\"magnificPopup\" href=\"https:\/\/devowl.io\/wp-content\/uploads\/knowledge-base\/wordpress-rest-api-is-not-reachable.png\" aria-label=\"WordPress REST API is not reachable\" class=\"w-image-h\"><img decoding=\"async\" width=\"890\" height=\"164\" src=\"https:\/\/devowl.io\/wp-content\/uploads\/knowledge-base\/wordpress-rest-api-is-not-reachable-890x164.png\" class=\"attachment-large size-large\" alt=\"WordPress REST API ist nicht erreichbar: Erkannt in der Browser-Konsole\" loading=\"lazy\" srcset=\"\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" data-srcset=\"\" \/><\/a><\/div><div class=\"wpb_text_column us_custom_92b2762d\"><div class=\"wpb_wrapper\"><p>Wenn du einen Fehler wie diesen siehst, musst du sicherstellen, dass die WordPress REST API wieder erreichbar ist.<\/p>\n<h2>Ich m\u00f6chte die REST API nicht generell aktivieren, sondern f\u00fcr dein Plugin. Ist das m\u00f6glich?<\/h2>\n<p class=\"translation-block\">Dies h\u00e4ngt von der Konfiguration des Plugins ab, das du verwendest, um den Zugriff auf die REST API zu beschr\u00e4nken. Zum Beispiel mit <a href=\"https:\/\/de.wordpress.org\/plugins\/wp-cerber\/\" target=\"_blank\" rel=\"noopener noreferrer\">Cerber Security, Anti-spam &amp; Malware Scan<\/a> kannst du die REST API \u00fcber 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 <code>\/wp-json\/realmedialibrary\/v1<\/code> in deiner WordPress REST API zugreifst, hei\u00dft der Namespace <code>realmedialibrary\/v1<\/code>.<\/p>\n<p>Wir verwenden f\u00fcr die devowl.io WordPress Plugins die folgenden Namespaces:<\/p>\n<ul>\n<li>Real Media Library: <code>realmedialibrary\/v1<\/code><\/li>\n<li>Real Physical Media: <code>real-physical-media\/v1<\/code><\/li>\n<li>Real Category Management: <code>real-category-library\/v1<\/code><\/li>\n<li>Real Thumbnail Generator: <code>real-thumbnail-generator\/v1<\/code><\/li>\n<li>Real Custom Post Order: <code>real-custom-post-order\/v1<\/code><\/li>\n<li class=\"translation-block\">Real Cookie Banner: <code>real-cookie-banner\/v1<\/code> (muss f\u00fcr <strong>jeden<\/strong> verf\u00fcgbar sein, nicht nur f\u00fcr eingeloggte Benutzer)<\/li>\n<\/ul>\n<p>Neben WordPress Plugins verwenden wir auch noch Third-Party Pakete, welche von unseren Plugins konsumiert werden. Hierf\u00fcr musst du noch folgende Namensbereiche freigeben:<\/p>\n<ul>\n<li>Real Product Manager (Lizenz- und Update-Client, alle Plugins): <code>real-product-manager-wp-client\/v1<\/code><\/li>\n<li>Real Queue (Warteschlangen-Management, aktuell nur in Real Cookie Banner): <code>real-queue\/v1<\/code><\/li>\n<\/ul>\n<h2>Ich verwende ein Plugin wie \"JWT Auth\". Ist es kompatibel?<\/h2>\n<p class=\"translation-block\">Wenn du ein Plugin wie <a href=\"https:\/\/de.wordpress.org\/plugins\/jwt-auth\/\" target=\"_blank\" rel=\"noopener noreferrer\">JWT Auth<\/a> verwenden m\u00f6chtest, musst du unsere Plugins ebenfalls auf die Whitelist setzen. Im Falle von <em>JWT Auth<\/em> musst du den Abschnitt \"Whitelisting Endpoints\" in dessen README Datei lesen und unsere Plugins zu den erlaubten Endpoints hinzuf\u00fcgen. Die Endpunkte findest du im obigen Absatz.<\/p>\n<h2>I don&#8217;t use a plugin, but e.g. NGINX to block the REST API<\/h2>\n<p class=\"translation-block\">Wenn du eine Serverkonfiguration verwendest, z.B. die <code>.htaccess<\/code> Datei oder eine NGINX-Konfiguration, um den Zugriff auf <code>wp-json<\/code> zu blockieren, solltest du bestimmte Unterpfade ausschlie\u00dfen. Du kannst diese im Tab \"Network\" deiner Entwicklertools im Browser nachverfolgen und sie entsprechend freigeben.<\/p>\n<p class=\"translation-block\">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: <code>\/wp-json\/jr5ek52mpe4hqt2dhfu\/mrvekpi0\/0ed0fef9da\/consent<\/code>. 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 \u00fcber den Filter <a href=\"https:\/\/docs.devowl.io\/real-cookie-banner\/hooks\/DevOwl_Utils_RestObfuscatePath.html\" target=\"_blank\" rel=\"noopener\">DevOwl\/Utils\/RestObfuscatePath<\/a> deaktiviert werden.<\/p>\n<\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2>Permalinks sind fehlerhaft.<\/h2>\n<p class=\"translation-block\">Wenn du Apache2 als Webserver verwendest, definiert die <code>.htaccess<\/code> 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.<\/p>\n<p class=\"translation-block\">Du kannst also die Regeln in der <code>.htaccess<\/code> Datei neu erstellen lassen:<\/p>\n<ol>\n<li>Gehe zu Einstellungen &gt; Permalinks in deinem WordPress Backend.<\/li>\n<li>Speichere die unver\u00e4nderten Einstellungen. Das Speichern l\u00f6st aus, dass die Regeln neu geschrieben werden.<\/li>\n<\/ol>\n<\/div><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2>Ich kann Daten lesen, aber nicht schreiben?<\/h2>\n<p>Du verwendest Real Cookie Banner und kannst deine Lizenz nicht speichern oder Ordner mit Real Media Library erstellen? Ein typischer Text f\u00fcr eine solche Fehlermeldung ist:<\/p>\n<blockquote>\n<p class=\"translation-block\">Fehlende(r) Parameter: terms <em>(oder \u00e4hnliche Feldnamen)<\/em><\/p>\n<\/blockquote>\n<p class=\"translation-block\">Die am meisten identifizierte Ursache an diesem Verhalten bei bisherigen Kunden war, dass dein Server so konfiguriert ist, URLs ohne endenden Slash <code>\/<\/code> an URLs mit endendem Slash <code>\/<\/code> weiterzuleiten (oder umgekehrt).<\/p>\n<p class=\"translation-block\">Du kannst dies nachvollziehen, indem du via F12 &gt; Netzwerk die jeweiligen Anfragen pr\u00fcfst, ob eine <code>POST<\/code> Anfrage weitergeleitet wird. Eine <code>POST<\/code> Anfrage darf nicht weitergeleitet werden und f\u00fchrt deshalb zu Fehlern, da zu speichernde Daten (quasi deine Eingaben) nicht weitergeleitet werden.<\/p>\n<p class=\"translation-block\">Am besten pr\u00fcfst du deine <code>.htaccess<\/code> Datei, ob du <code>\/wp-json<\/code> von den URL-Weiterleitungen ausschlie\u00dfen kannst.<\/p>\n<p>Siehe auch: <a href=\"https:\/\/docs.wp-rocket.me\/article\/131-redirection-to-enforce-trailing-slash-on-urls\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.wp-rocket.me\/article\/131-redirection-to-enforce-trailing-slash-on-urls<\/a><\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section>","protected":false},"template":"","topic":[20],"class_list":["post-504","knowledge-base","type-knowledge-base","status-publish","hentry","topic-wordpress"],"acf":[],"_links":{"self":[{"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/knowledge-base\/504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/knowledge-base"}],"about":[{"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/types\/knowledge-base"}],"version-history":[{"count":18,"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/knowledge-base\/504\/revisions"}],"predecessor-version":[{"id":237617,"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/knowledge-base\/504\/revisions\/237617"}],"wp:attachment":[{"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/media?parent=504"}],"wp:term":[{"taxonomy":"topic","embeddable":true,"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/topic?post=504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}