我需要接受一个网址:
https://aidin.s3.amazonaws.com/appname/bucket/folder/faxattach/bXs9FerLJR1tnhs3z?AWSAccessKeyId=ACCEDD_KEY&Expires=1372360744&Signature=SIGNATURE
并检查该网址是否有效且未过期。
我尝试了一些不同的东西,但它们往往会出错。例如:
url = URI.parse("https://aidin.s3.amazonaws.com/appname/bucket/folder/faxattach/bXs9FerLJR1tnhs3z?AWSAccessKeyId=ACCEDD_KEY&Expires=1372360744&Signature=SIGNATURE")
req = Net::HTTP.new(url.host, url.port)
res = req.request_head(url.path)
这给了我
Net::HTTPBadResponse: wrong status line: "\x15\x03\x01\x00\x02\x02"
无论网址是否有效。
答案 0 :(得分:1)
我自己也遇到了这个问题,这就是为我解决的问题:
url = URI.parse(url_param)
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true if url.scheme == 'https'
response = http.request_head(url.path)
错误的状态行是由于Net库将请求视为HTTP,而S3可以是。 use_ssl
布尔赋值取决于该方案是HTTPS。
答案 1 :(得分:0)
你可以使用aws-s3 gem(https://github.com/marcel/aws-s3)
S3Object.exists? 'headshot.jpg', 'photos'