403-Fehler bei mehreren API-Aufrufen

Wir verwenden die folgenden APIs, um Benutzer zu aktualisieren und zu sperren, erhalten jedoch 403-Fehler. Können Sie uns mitteilen, was die Ursache für diesen Fehler ist? Zur Information: Wir verwenden den API-Schlüssel eines Administrators.

Sperren-API

{{base_url}}/admin/users/316/suspend?api_key={{api_key}}&api_username={{api_username}}

Anfrage-Body

{
    "suspend_until": "3020-04-17",
    "reason": "inactive"
}

Antwort – 403 Forbidden

E-Mail-Aktualisierung

{{base_url}}/users/{username}/preferences/email?api_key={{api_key}}&api_username={{api_username}}

Anfrage-Body

{
     "email": "discourse1@example.com"
}

Antwort – 403 Forbidden

Sie müssen den API-Schlüssel im Header und nicht in der URL angeben.

2 „Gefällt mir“

Habe es auch versucht. Erhalte dieselbe 403 Forbidden-Meldung mit BODY-> [“BAD CSRF”]

Die API-Anmeldedaten müssen im Anfrage-Header enthalten sein. Außerdem müssen Sie für die Header-Feldnamen einen Bindestrich anstelle eines Unterstrichs verwenden:

  • api_key muss in api-key (oder Api-Key) geändert werden
  • api_username muss in api-username (oder Api-Username) geändert werden

Die Regel lautet, dass die Header-Feldnamen nicht case-sensitive sind, Sie jedoch Bindestriche und keine Unterstriche verwenden müssen. (Das habe ich auf die harte Tour gelernt.) Schauen Sie sich das Beispiel oben auf Discourse REST API Documentation an, um eine korrekt formatierte API-Anfrage zu sehen.

4 „Gefällt mir“