【发布时间】:2014-01-08 17:11:09
【问题描述】:
我一辈子都无法解决这个问题。我到处搜索了我能想到的每个关键字,但找不到一个简单的答案。
如何为 Apache、Phusion Passenger、Rails 4 生产服务器堆栈启用 HTTP PUT 和 DELETE?
我非常困惑为什么这很难开始工作。窥视,让我的 AJAX PUT 和 DELETE 请求在后端被接受的技巧是什么?当我只是在本地机器上运行 Webrick 进行开发时,这很有效,但我们的生产站点似乎不接受 PUT 和 DELETE 请求。
我什至无法判断这是 Apache 问题、Passenger 问题还是什么。有人必须使用完整的 REST 功能完成此设置。或者这只是不适合这项工作的技术? (我不是服务器专家)。在这种情况下,你会推荐什么?
注意:应用程序的其余部分运行良好,只有 PUT/DELETE AJAX 请求被浏览器中止。
【问题讨论】:
-
您可以使用Passenger Standalone来检查它是否是Apache,它使用Nginx来处理它的请求。不要运行
rails server,只需运行passenger start。检查是否有效。 -
我使用
sudo service apache2 start启动我的服务器,我假设在某些时候调用passenger start,但我不知道。 -
它没有。
passenger start启动Passenger Standalone,而不是Apache 的Passenger。 Passenger Standalone 和Passenger for Apache 是两个完全不同的东西。见modrails.com/documentation/Users%20guide.html -
我遇到了同样的问题。它适用于
passenger start。从其他地方收集的信息来看,由于安全原因,Apache 似乎不允许 PUT。我认为只有 AJAX 请求受到影响的原因是 Rails 通过发送带有额外参数的 POST 来伪造正常的 PUT 请求。 -
天啊!在修复我的代码以改用 POST 后,结果发现使用了错误的 URL,访问了 Rails 之外的路径。
标签: ruby-on-rails apache http passenger