Unterstützt der jruby-rack-Servlet-Container PUT/DELETE?
-
09-12-2019 - |
Frage
Ich versuche, eine Rails-App mit Warbler als WAR bereitzustellen.Ich habe es in Tomcat 6 laufen lassen und es scheint gut zu laufen.Allerdings alle meine PUT
Und DELETE
Anfragen werden mit a abgelehnt 403 (Forbidden)
.
Soweit ich das beurteilen konnte, sind bei der standardmäßigen Tomcat-Installation unter Debian/Ubuntu diese Methoden deaktiviert über:
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
Ich habe versucht, dies auf einzustellen false
in meinem /etc/tomcat6/web.xml
aber keine Würfel.Ich frage mich, ob ich etwas Ähnliches tun muss jruby-rack
Servlet-Container, der von Warbler in meinem WAR verpackt wurde?Wenn ja, wie würde ich vorgehen?
Wenn nicht, warum sollte Tomcat dann alles ablehnen? PUT
s und DELETE
s wird an meine Rails-App gesendet?
Lösung
Nur für zusätzliche Details, hier ist der relevante Fehler in jruby-rack:
https://github.com/jruby/jruby-rack/issues/105
Zum Zeitpunkt des Verfassens dieses Artikels sieht es so aus, als sei eine Lösung im Gange.
Andere Tipps
Ich hatte das gleiche Problem.Ich habe die Version des jruby-rack-Gems von 1.1.5 auf 1.1.4 geändert und jetzt funktioniert es einwandfrei.
Für die Aufzeichnung von Problemen wie diesen – speziell für die RackFilter
Man kann jederzeit versuchen, den Servlet-Betriebsmodus als Problemumgehung zu verwenden. Entfernen Sie einfach die Filterdeklaration (und die Zuordnung) und deklarieren und ordnen Sie sie zu RackServlet
:
<!--
<filter>
<filter-name>RackFilter</filter-name>
<filter-class>org.jruby.rack.RackFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RackFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>-->
<servlet>
<servlet-name>RackServlet</servlet-name>
<servlet-class>org.jruby.rack.RackServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RackServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Falls Sie Warbler verwenden, kopieren Sie die web.xml.erb in dein config Verzeichnis:
cp [GEM_HOME]/gems/warbler-1.3.4/web.xml.erb config