【发布时间】:2016-10-13 01:05:28
【问题描述】:
我有一个 Rails 应用程序,其载波上传器配置为在 S3 存储桶上使用carrierwave-aws。
该存储桶的权限很糟糕,但希望我修复了它们,现在上传似乎工作正常(我检查了单个文件的权限,检查了公共读取)
Rails 应用使用 cloudfront,它已配置为处理“普通”资产(css、js 等)并使用carrierwave-aws。
但是我仍然收到 401 错误,更糟糕的是,当这种情况发生时,屏幕上会出现一个 HTTP Basic auth popu,要求输入我的分发密码
“NetworkError: 401 Unauthorized - https://xxxxxxx.cloudfront.net/uploads/user/avatar/xxxxxx/thumb_avatar.jpg”
上述错误触发 HTTP 基本身份验证窗口,要求 xxx.cloudfront.net 的用户/密码
如果这是链接,事实证明我的 Rails 网站本身确实有这种身份验证(在我们开始生产之前)。
在 CloudFront 上,我配置了两个来源:我的 Rails 服务器(和 css/js 都可以,所以我猜这个很好)和 S3 存储桶(虽然不知道我如何真正测试这个)
所以
- 如何检查我的 Rails -> Carrierwave-aws -> CloudFront 管道是否工作正常? (上传很好,上传后我无法从浏览器中读取)
- 如果出现 401 错误,如何从网站禁用 HTTP 基本身份验证?
编辑:我在 Rails ApplicationController 中设置基本身份验证
def authenticate
if ENV["HTTP_BASIC_AUTH"] == "true"
authenticate_or_request_with_http_basic do |username, password|
username == "wxx" && password == "xxx!" or
end
end
end
【问题讨论】:
-
您在 Apache 或其他什么地方设置了基本身份验证配置?因为我猜这是云前端问题的根本原因。
-
嗯,是的,这是在我的 Rails ApplicationController 中完成的。但是,弹出窗口要求提供一个云端 url http 基本身份验证,即使我输入了我的 applicationcontroller 的用户/pw 凭据,它也不起作用。
-
由于基本身份验证,云前端无法缓存来自父服务器的文件?尝试禁用身份验证,然后查看是否仍然发生。
标签: ruby-on-rails amazon-web-services amazon-s3 carrierwave amazon-cloudfront