簡體   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