在我的Rails應用程序中,我試圖通過AJAX將JSON傳遞給控制器,但我遇到了401 (unauthorized)
錯誤。我一直在研究這個,並試圖弄清楚我做錯了什麼,但我不太清楚。Rails - 401(未授權)錯誤 - JSON與AJAX控制器
首先,在AJAX本身 -
$.ajax({
url: "report/submission",
type: "POST",
beforeSend: function(xhr) {xhr.setRequestHeader("X-CSRF-Token", $("meta[name='csrf-token']").attr("content"))},
data: {"report" : reportParameter}
});
這將數據傳遞到submission
行動在Report
控制器 -
class ReportController < ApplicationController
before_action :authenticate_user!, :only => [:submission]
def submission
INSERT ENTRIES TO DB, ETC
end
end
因此,也許一個複雜因素是,我需要before_action
設計登錄。
所以基本過程是,用戶完成一個形式,條目被組裝成JSON(reportParameter
),然後傳遞給submission
行動需要登錄成功完成(我知道這可能會向後似乎,但它對這個特定的應用程序是必要的)。
我的佈局包括<%= csrf_meta_tags %>
,我在application
控制器中設置protect_from_forgery with: :null_session
。
我必須承認,我不明白這一點,以至於沒有更多的洞察力 - 我知道這是一個與CSRF令牌相關的授權問題,但我認爲在AJAX中設置beforeSend
會解決這個問題。
任何指導將不勝感激。
那麼,當用戶進行ajax調用時,他/她沒有登錄? – Uzbekjon
是的,這是正確的。這個調用是在他們登錄前完成的,然後如果他們成功登錄,JSON的內容將被解析出來並記錄在DB中。 – skwidbreth