uri = URI.parse("https://cloudfront.amazonaws.com/2010-08-01/distribution/#{config['cloud_dist_id']}/invalidation")
req = Net::HTTP::Post.new(uri.path)
req.initialize_http_header({
'x-amz-date' => date,
'Content-Type' => 'text/xml',
'Authorization' => "AWS %s:%s" % [config['access_key_id'], Base64.encode64(digest.digest)]
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
res = http.request(req)
输出时:
puts http.inspect
puts res.inspect
本地工作正常:
#<Net::HTTP cloudfront.amazonaws.com:443 open=false>
#<Net::HTTPCreated 201 Created readbody=true>
但是在heroku上:
#<Net::HTTPForbidden 403 Forbidden readbody=true>
Failed 403
知道为什么这在heroku上失败了。为什么被禁止?感谢
答案 0 :(得分:1)
Heroku会在签署您的请求时添加您的应用程序不知道的其他输出标头。
尝试明确限制参与签名的标头范围,AWS API中有一些选项用于此
答案 1 :(得分:0)
使用heroku控制台进行测试。
它应该工作,因为我使用相同的东西,但使用HTTParty。
由于