Контейнер сервлетов jruby-rack поддерживает PUT/DELETE?
Я пытаюсь развернуть приложение Rails как WAR, используя Warbler. У меня это работает в Tomcat 6, и, кажется, работает нормально. Тем не менее, все мои PUT
а также DELETE
запросы отклоняются с 403 (Forbidden)
,
Из того, что я смог собрать, установка Tomcat по умолчанию в Debian/Ubuntu отключила следующие методы:
<init-param>
<param-name>readonly</param-name>
<param-value>true</param-value>
</init-param>
Я пытался установить это false
в моем /etc/tomcat6/web.xml
но не игра в кости. Интересно, придется ли мне делать что-то похожее на jruby-rack
контейнер сервлетов, упакованный Warbler в мою WAR? Если так, как бы я пошел по этому поводу?
Если нет, то почему Tomcat отвергает все PUT
с и DELETE
отправляется в мое приложение Rails?
3 ответа
Просто для дополнительной информации, вот соответствующая ошибка на jruby-rack:
https://github.com/jruby/jruby-rack/issues/105
Похоже, что исправление находится в процессе на момент написания этой статьи.
У меня такая же проблема. Я изменил версию jruby-rack gem с 1.1.5 до 1.1.4 и теперь работает нормально.
Для записи по таким вопросам, как эти - специфические для RackFilter
всегда можно попробовать использовать режим работы сервлета в качестве обходного пути, просто удалите объявление фильтра (и отображение) и объявите и отобразите 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>
если вы используете warbler, скопируйте файл web.xml.erb в каталог конфигурации:
cp [GEM_HOME]/gems/warbler-1.3.4/web.xml.erb config