如何配置 Fine Uploader 以发出 Rails 兼容的请求?
How to configure Fine Uploader to make Rails-compatible requests?
使用 Fine Uploader 和 Rails 3.2,我不知道如何配置 Fine Uploader 来发出 Rails 后端可以授权的上传请求。
Fine Uploader 前端元素工作正常并以我的资源为目标 (uploads
),但由于 uploads#create
端点受授权保护(用户必须登录),请求必须包含允许通过的有效会话信息。并没有,所以上传当然失败了。
如何让 Fine Uploader 发出包含必要信息的请求,以便 Rails 接受此作为用户会话的一部分?
为了值得我像这样初始化上传器:
app/views/uploads/index.html.haml
[ ...template... ]
:javascript
var uploader = new qq.FineUploader({
debug:true,
element: document.getElementById("uploader"),
request: {
endpoint: '/uploads',
}
})
它发出一个 POST /upload
请求,该请求被路由到 upload#create
,但由于在控制器中进行如下检查而导致授权失败:
def session_exists?
return true if !session[:user_id].blank?`
任何见解表示赞赏。
这里的关键是理解 Rails' authenticity token
及其在 CSRF(跨站请求伪造)保护中的作用。从 Fine Uploader 发出的 AJAX 请求必须包含 Rails 的正确令牌才能接受它作为来自该站点的合法请求。
为此,您必须首先 在渲染的某处包含令牌HTML。
例如在 HAML 模板中使用它:
%div#uploader{data: {authenticity: {token: form_authenticity_token}}}
:javascript
var uploader = new qq.FineUploader({
debug:true,
element: document.getElementById("uploader"),
request: {
endpoint: '/uploads',
params: {authenticity_token: $('#uploader').data('authenticity-token')}
}
})
这会将令牌生成到 HTML 的 #uploader
元素中,并配置 Fine Uploader 在使用 JQuery 数据访问器发出请求时传回该值。
这可能都是基本的东西,但我是 Rails 的新手,所以这让我困惑了一段时间。 SO 问题“”涉及到这一点,但直到我拼凑出更大的上下文后,我才能够理解它的答案。
使用 Fine Uploader 和 Rails 3.2,我不知道如何配置 Fine Uploader 来发出 Rails 后端可以授权的上传请求。
Fine Uploader 前端元素工作正常并以我的资源为目标 (uploads
),但由于 uploads#create
端点受授权保护(用户必须登录),请求必须包含允许通过的有效会话信息。并没有,所以上传当然失败了。
如何让 Fine Uploader 发出包含必要信息的请求,以便 Rails 接受此作为用户会话的一部分?
为了值得我像这样初始化上传器:
app/views/uploads/index.html.haml
[ ...template... ]
:javascript
var uploader = new qq.FineUploader({
debug:true,
element: document.getElementById("uploader"),
request: {
endpoint: '/uploads',
}
})
它发出一个 POST /upload
请求,该请求被路由到 upload#create
,但由于在控制器中进行如下检查而导致授权失败:
def session_exists?
return true if !session[:user_id].blank?`
任何见解表示赞赏。
这里的关键是理解 Rails' authenticity token
及其在 CSRF(跨站请求伪造)保护中的作用。从 Fine Uploader 发出的 AJAX 请求必须包含 Rails 的正确令牌才能接受它作为来自该站点的合法请求。
为此,您必须首先 在渲染的某处包含令牌HTML。
例如在 HAML 模板中使用它:
%div#uploader{data: {authenticity: {token: form_authenticity_token}}}
:javascript
var uploader = new qq.FineUploader({
debug:true,
element: document.getElementById("uploader"),
request: {
endpoint: '/uploads',
params: {authenticity_token: $('#uploader').data('authenticity-token')}
}
})
这会将令牌生成到 HTML 的 #uploader
元素中,并配置 Fine Uploader 在使用 JQuery 数据访问器发出请求时传回该值。
这可能都是基本的东西,但我是 Rails 的新手,所以这让我困惑了一段时间。 SO 问题“