【问题标题】:Delete HTTP request in Ruby produces 401 unauthorized在 Ruby 中删除 HTTP 请求会产生 401 未授权
【发布时间】:2015-08-24 03:53:26
【问题描述】:

下面的代码 sn-p 给了我一个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)

我的策略和签名是在此代码 sn-p 之前设置的,就像我说的,如果我只是执行 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 库来删除文件?

【问题讨论】:

标签: ruby filepicker.io


【解决方案1】:

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

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

确保您在该行之前创建密钥变量并将其设置为等于您的 Filepicker 应用程序密钥(策略和签名也是如此)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    相关资源
    最近更新 更多