2

我正在尝试使用 Warbler 将 Rails 应用程序部署为 WAR。我让它在 Tomcat 6 中运行,它似乎运行良好。但是,我的所有PUT请求DELETE都被拒绝了403 (Forbidden)

据我所知,Debian/Ubuntu 上的默认 Tomcat 安装通过以下方式禁用了这些方法:

<init-param>
   <param-name>readonly</param-name>
   <param-value>true</param-value>
</init-param>

我已经尝试将其设置为false我的/etc/tomcat6/web.xml但没有骰子。我想知道我的WAR中是否必须做类似于jruby-rackWarbler打包的servlet容器的事情?如果是这样,我将如何处理?

如果不是,为什么 Tomcat 会拒绝所有发送到我的 Rails 应用程序的PUTs 和s ?DELETE

4

3 回答 3

3

我有同样的问题。我将 jruby-rack gem 的版本从 1.1.5 更改为 1.1.4,现在它可以正常工作了。

于 2012-05-01T23:10:21.003 回答
2

对于此类问题的记录-特定于RackFilter一个总是可以尝试使用 servlet 操作模式作为一种解决方法,只需删除过滤器声明(和映射)并声明和映射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
于 2012-05-16T08:27:15.480 回答
1

只是为了获得更多细节,这里是 jruby-rack 上的相关错误:

https://github.com/jruby/jruby-rack/issues/105

在撰写本文时,似乎正在进行修复。

于 2012-05-09T14:34:47.020 回答