下面的代码段给出了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库来删除文件?
答案 0 :(得分:0)
答案是将我的Filepicker应用程序密钥添加到参数中:
polysig_str = "?key=#{key}&policy=#{policy}&signature=#{signature}"
确保在该行之前创建密钥变量,并将其设置为与Filepicker应用密钥相同(策略和签名相同)。
现在我可以在Ruby中发送HTTP删除请求。