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

Kommentare

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.