Heroku和Django出现405错误

8
我正在尝试将我的django项目从Apache服务器迁移到heroku。目前为止,除了在使用PATCH Http方法时(与django-tastypie一起使用)遇到的问题外,一切似乎都正常运作。
我有一个中间件可以允许使用PATCH方法,并且它在之前的Apache服务器上也能正常工作。现在,我只得到一个405(METHOD_NOT_ALLOWED)错误。传统的HTTP方法仍然有效(GET、POST、DELETE、POST)。
我还读到nginx默认不支持OPTIONS(和可能的PATCH请求?)需要进行一些配置。据我所知,nginx会为OPTIONS方法请求返回类似的405错误。我也相当确定heroku使用nginx前端,这可能是问题所在。
这引出了我下一个问题:我不知道如何添加自己的标头,因为所有这些都由heroku控制。是否有人确切地知道问题所在?是否有任何方法,除了放弃PATCH方法(这将使事情更加方便),让PATCH方法在heroku上工作?
1个回答

8

Heroku目前不支持补丁(patch)。这不是由于nginx问题,而是由于路由层面的问题。Heroku正在解决此问题,但还没有可用时间表。此外,由于这些标题由Heroku控制,因此您无法添加自定义标题。


我尝试使用Heroku创建这个支持工单,但是他们的支持系统回复说:“对不起,但发生了一些错误”。因此我将在这里发布它。Heroku支持团队,在我的本地开发实例中,HTTP PATCH请求可以正常工作,但在我的Heroku分段实例上失败。您能否确认Heroku是否支持HTTP PATCH请求?我在四月份发现了这个Stack Overflow(SO)的问题:https://dev59.com/S2LVa4cB1Zd3GeqPwnlV - Erik
这表明这是Heroku路由层的限制。我在Heroku文档中没有找到任何提及它的内容。SO问题还暗示自定义标头在Heroku上无法使用,但我已经使用它们而没有任何问题。 - Erik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接