我在 Heroku 设置了服务器,并且使用 Amazon s3 进行图像存储(使用 carrierwave gem 上传它们),但有时会出现奇怪的 403 错误:
“加载资源失败:服务器响应状态为 403(禁止)”
(见下图)
如果我重新加载页面,图像会再次显示。
我已经设置了一个 CORSRule:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<ExposeHeader>ETag</ExposeHeader>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>Accept-Ranges</ExposeHeader>
<ExposeHeader>Content-Range</ExposeHeader>
<ExposeHeader>Content-Encoding</ExposeHeader>
<ExposeHeader>Content-Length</ExposeHeader>
<AllowedHeader>Range</AllowedHeader>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
我不是 CORSRule 的专家,我尝试了一些,但如果有人能指出我正确的方向,我会很高兴。- - - - - - - - 更新 - - - - - - -
当我缺少图像时,这里有我的请求通用、响应 header 和请求 header 。
一般的
Request URL:https://exnerbilleder.s3.amazonaws.com/nye/uploads/image/image/215/thumb_5.jpg
Request Method:GET
Status Code:403 Forbidden
Remote Address:52.95.150.17:443
Referrer Policy:no-referrer-when-downgrade
响应头Content-Type:application/xml
Date:Tue, 08 Aug 2017 15:49:49 GMT
Server:AmazonS3
Transfer-Encoding:chunked
x-amz-id-2:EG4D5X29x8eAuu+xD9PdG2MsdGYnWHnpkuOc87p1h7nbFgvk57S6Be631UwTdF9tHMauoAjf6j4=
x-amz-request-id:0C43705C41CD57C9
请求头Accept:image/webp,image/apng,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:da-DK,da;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Host:exnerbilleder.s3.amazonaws.com
Referer:http://inger-exner.herokuapp.com/works/slotsgarden
User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Mobile Safari/537.36
访问网站
如果您访问the site,也许您会遇到这个问题。
最佳答案
看起来像亚马逊的问题。 New Relic 或 Skylight 等工具可以帮助您调试此类问题,其中涉及不同服务提供商的不同组件。
关于ruby-on-rails - Heroku Amazon s3 图像 - 有时会出现 403 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45556551/