Du willst deine Ziele in nur 12 Wochen erreichen?
Erfahre, wie du mit dem 12-Wochen-Plan dein eigenes Produktivitätssystem entwickelst und deine Ziele Schritt für Schritt erreichst!
👉 Jetzt den Beitrag lesen und loslegen!
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.
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.
Comments