Ich habe mein WordPress auf aktualisiert 4.7.1
, und danach habe ich versucht, Benutzer über die REST-API aufzulisten, was behoben werden sollte, aber ich konnte Benutzer abrufen.
https://mywebsite.com/wp-json/wp/v2/users
Ausgabe:
[{"id":1,"name":"admin","url":"","description":"","link":"https:\/\/mywebsite\/author\/admin\/","slug":"admin","avatar_urls":{"24": ...
Änderungsprotokoll der neuesten Version:
Die REST-API enthüllte Benutzerdaten für alle Benutzer, die einen Beitrag eines öffentlichen Beitragstyps verfasst hatten. WordPress 4.7.1 beschränkt dies nur auf Beitragstypen, die angegeben haben, dass sie in der REST-API angezeigt werden sollen. Berichtet von Krogsgard und Chris Jean.
Nach der Installation des Plugins Disable REST API
scheint alles in Ordnung zu sein, aber ich verwende es nicht gerne für jedes kleine Plugin.
Die Ausgabe nach Verwendung des Plugins ist:
{"code":"rest_cannot_access","message":"Only authenticated users can access the REST API.","data":{"status":401}}
Wie kann ich dieses Problem beheben, ohne ein Plugin zu verwenden, oder warum gibt es dieses Problem auch nach dem Upgrade?
EDIT 30.9.2017
Mir ist aufgefallen, dass es einen Konflikt zwischen dem contact 7
Plugin und Disable REST API
gibt, der zu 401 unauthorized
Fehlern führen kann.
Wenn Sie versuchen, eine Nachricht über das contact 7
Formular zu senden , wird eine Anfrage gestellt
wp-json/contact-form-7/v1/contact-forms/258/feedback
und das Deaktivieren ist keine gute Idee.
Antworten:
Verwenden Sie dieses Code-Snippet, um die Benutzerliste auszublenden und 404 als Ergebnis zu erhalten, während die restlichen API-Aufrufe so weiterlaufen, wie sie waren.
Sie können auf diesen Link auf gitHub repo von WP_REST_API verweisen, um weitere Details dazu zu erfahren.
::AKTUALISIEREN::
Um alle Standard-REST-API-Endpunkte zu entfernen, müssen Sie folgenden Code hinzufügen:
<?php remove_action('rest_api_init', 'create_initial_rest_routes', 99); ?>
quelle
functions.php
Ihrem Thema behalten .Entfernen Sie den API-Link aus dem HTML-Kopf, wenn Sie möchten.
Dann fordern Sie für alle Anfragen eine Authentifizierung an.
Dies wird Sie mit der gewünschten Nachricht verlassen.
Um die Aufzählung zu stoppen, könnten Sie so etwas verwenden.
Schauen Sie sich den ganzen Beitrag für weitere Techniken an.
quelle
Sie können das Problem mit nginx / apache config beheben:
quelle
Um dies zu beheben, müssen Sie zunächst die Ursache des Problems kennen.
Bitte lassen Sie mich wissen, wenn dies Sie in die richtige Richtung wies.
Ein schmutziger Weg, dies zu lösen, besteht darin, die URL in Ihren .htacces zu blockieren. https://mywebsite.com/wp-json/wp/v2/users
quelle