2

我需要接受如下网址: https://aidin.s3.amazonaws.com/appname/bucket/folder/faxattach/bXs9FerLJR1tnhs3z?AWSAccessKeyId=ACCEDD_KEY&Expires=1372360744&Signature=SIGNATURE

并检查该 URL 是否有效且未过期。

我尝试了一些不同的东西,但它们往往会出错。例如:

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"知道 URL 是否有效。

4

2 回答 2

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 。

于 2014-01-31T17:51:18.137 回答
0

您可以使用 aws-s3 gem ( https://github.com/marcel/aws-s3 )

S3Object.exists? 'headshot.jpg', 'photos'
于 2013-06-26T20:53:17.370 回答