在Ruby中删除HTTP请求会产生401个未经授权的

时间:2015-08-24 03:53:27

标签: ruby filepicker.io

下面的代码段给出了401 unauthorized响应。如果我将HTTP方法从Delete更改为Get或Post:

,则此代码有效
url = 'https://www.filepicker.io/api/file/LYsl3wunQBW0to2JD4D4'
polysig_str = "?policy=#{policy}&signature=#{signature}"

uri = URI.parse(url)
http = Net::HTTP.new(uri.host)
req = Net::HTTP::Delete.new(uri.path + polysig_str)
response = http.request(req)

我的政策和签名是在此代码段之前设置的,就像我说的,如果我只是执行Get请求,我可以正常工作,我可以在响应中看到文件数据。我也试过发帖到这个网址:

url = 'https://www.filepicker.io/api/file/LYsl3wunQBW0to2JD4D4/remove'

同样的结果:401未经授权。

我已尝试将call: 'remove'纳入政策和handle: 'LYsl3wunQBW0to2JD4D4'

签名和政策似乎是正确的,因为如果我创建了过期的政策或仅包含call: 'read',我会收到403 Forbidden响应,而不是401。

我无法弄清楚如何从HTTP请求中删除记录。有趣的是,我可以发布到该URL并覆盖该文件的内容,但我无法完全删除它(Ruby中的所有内容)。

也许它只能使用Filepicker提供的专有JS库来删除文件?

1 个答案:

答案 0 :(得分:0)

答案是将我的Filepicker应用程序密钥添加到参数中:

polysig_str = "?key=#{key}&policy=#{policy}&signature=#{signature}"

确保在该行之前创建密钥变量,并将其设置为与Filepicker应用密钥相同(策略和签名相同)。

现在我可以在Ruby中发送HTTP删除请求。