Stop! Can I have your attention for a moment?

Do you want to change your life? Join me on my 50-Day Life Transformation Challenge. Get involved! It won't cost you anything except a few bad habits.

Drupal 9.1 REST: Post und Patch Anfragen werden abgelehnt

Seit ein paar Tagen beobachte ich in verschiedenen Projekten das gleiche Problem: Post und Patch Requests an einigen Rest Endpunkten werden mit einem Error 500 abgelehnt.

Drupal Rest: MethodNotAllowedException
Error 500: Fehlermeldung aus einer Vue js Web-App beim Versuch mit einem Post Request auf den Drupal REST Endpunkt zuzugreifen.

 Folgende Fehlermeldung findet sich in den Drupal-Logs:

Symfony\Component\Routing\Exception\MethodNotAllowedException: in Drupal\Core\Routing\MethodFilter->filter()

Das Problem scheint irrational: Die REST Resources waren alle korrekt angelegt und wurden über das Rest UI Modul jeweils mit POST oder PATCH Methode aktiviert, json als Datenformat und Cookie als Authentifizierungsmethode ausgewählt.

Interessant: Das Problem taucht lediglich auf Remote-Webservern auf. In lokalen Entwicklungsumgebungen passierte es nicht. Alle Request gingen problemlos durch.

Workaround: Spracheinstellungen anpassen

Alle betroffenen Seiten waren mehrsprachig und hatten zumeist "deutsch" als Standardsprache ausgewählt. Da alle Requests auf URLs laufen, die nicht mit einer Sprachauswahl geprefixt sind, vermute ich, dass es hier ein Problem im Drupal-Routing-System handelt. Ruft man eine URL ohne Sprachprefix auf - zum Beispiel example.com/demo statt example.com/en/demo - dann routet Drupal intern auf die URL mit Sprachprefix um. Vermutlich wird kommt es hierbei zu einer Änderung des Request Headers.

Als Workaround hilft es, die Spracheinstellung im Benutzerprofil anzupassen. Dort sollte der Wert für "Administration page language" auf "No preference" gesetzt werden.

Admin Page Language auf No preference setzen

Comments

Lass uns ein paar Gedanken teilen!

Schließe Dich einer wachsenden Gemeinschaft von freundlichen Lesern an. Jeden Sonntag teile ich meine Gedanken über rationales Denken, Produktivität und das Leben.