Rails/Redmine - 无法验证422错误中的真实性令牌结果

Shr*_*tor 5 ruby ruby-on-rails http-post redmine redmine-plugins

我正在为Redmine平台开发插件,我想使用链接而不是表单将文件附加到文档(基本上上传文件),为此我在方法中创建POST请求.

我按照这里的说明,将内容类型设置application/octet-stream为请求,然后将文件内容放在请求正文中.

我在这个网站上看了很多帖子,我知道这经常被问到但是我无法正确地处理我的请求,我仍然会收到错误.这是我的代码:

uri = URI.parse("http://<my_server_IP_address>:3000/uploads.js")

http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.path, initheader = {'X-CSRF-Token' => form_authenticity_token, 'Content-Type' => 'application/octet-stream'})
file = File.new("/home/testFile.txt", 'rb')
request.body = file.read
@response = http.request(request)
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用该form_authenticity_token方法在标头中设置CSRF令牌,但我仍然收到422错误.

Filter chain halted as :verify_authenticity_token rendered or redirected
Completed 422 Unprocessable Entity in 4.7ms (ActiveRecord: 0.0ms)
Run Code Online (Sandbox Code Playgroud)

我也试着把skip_before_filter :verify_authenticity_token我的控制器打开,尽管不推荐,但它也没有用.

你知道这里有什么问题吗?

注意:我正在使用Rails 3.2.16,Ruby 1.9.3-p392和Redmine 2.4.2