繁体   English   中英

Rails POST不提取任何路径,查询或请求参数

[英]Rails POST doesnt extract any path, query or request parameters

我想授予用户从其站点访问我的API(托管在heroku.com上)的权限。 但是,当我希望他们允许发布到api时,会发生一个奇怪的问题:

从具有正确的动作URL的正确形式发送的数据(例如“ http://myapp.com/projects/123/tasks/321/todos”)-参数被序列化并通过jQuery发送-我遇到“ ActionController: :MethodNotAllowed“,以及附加信息:”仅允许获取和发布请求“,它使用:method =>:options重新路由到ApplicationController#index。

Rails不会从URL中提取project_id(123)和task_id(321)的参数,其他任何request_parameters,path_parameters或query_parameters都不可用。

当我从外部站点进行发布时,会发生这种情况,但是,当从本地计算机上的html页面进行发布时,则不会发生。 我最初的想法是关于错误的编码,但是如何解决该问题。

编辑:我正在使用authlogic(不是devise :-D),对于:create动作,protect_from_forgery已经被跳过。

任何建议表示赞赏

由于跨域策略而发生了问题-该请求是从另一个域发出的-并且由于我使用的是支持CORS的最新浏览器,因此它首先发送OPTIONS请求以从服务器获知,该操作允许此域。

我想发生这种情况是因为Rails试图保护您的CSRF攻击形式。

您可以注释掉ApplicationController中的protect_from_forgery行以对其进行测试。

但我不确定这是否是在生产环境中解决此问题的正确方法。

好的。 这次,我将尝试回答正确的问题(请参阅其他评论)。

所以我已经考虑过了,我想知道,这是jQuery调用尝试PUT请求的情况吗? 当您使用本地表单时,Rails会发布数据,但会添加额外的_method字段来模拟PUT。

不知道您是否正在使用jquery-rails ,但这会在您的AJAX调用中为您设置_method参数以及PUT / POST动词转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM