S3存储桶策略 - 字体不在网站上显示

时间:2016-10-18 01:16:02

标签: php amazon-web-services svg amazon-s3

您好我正在尝试从我的网站上的s3获取数据,每件事情都运行良好,但字体没有显示。这是我的政策

{
    "Version": "2008-10-17",
    "Id": "http referer policy example",
    "Statement": [
        {
            "Sid": "Allow get requests originated from 54.148.239.58",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "https://s3-us-west-2.amazonaws.com/bucket/*",
                        "http://54.148.239.58/*"
                    ]
                }
            }
        }
    ]
}

输出: - http://54.148.239.58/s3_file_exit_ck1.php?link=663&page=4

我不知道我做错了什么。

如果我从政策.svg文件中删除https://s3-us-west-2.amazonaws.com/bucket/ *,则不会显示。

但这不起作用,

@font-face {
    font-family: ZapfDingbatsStd_2b4;
    src: url("https://s3-us-west-2.amazonaws.com/htmlmanuals/663/fonts/ZapfDingbatsStd_2b.woff") format("woff");
}

它适用于localhost。

请帮助

1 个答案:

答案 0 :(得分:1)

根据我的网络浏览器中的控制台,当我访问您的页面时,它会触发错误消息:

  

来自“https://s3-us-west-2.amazonaws.com”的字体已被跨源资源共享策略阻止加载:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://54.148.x.x”访问。

来自一个域(s3-us-west-2.amazonaws.com)的页面似乎正在尝试引用来自另一个域(54.148.x.x)的数据。这是在浏览器中触发跨源资源共享(CORS)检查。

您需要配置CORS规则以允许访问。

来自Cross-Origin Resource Sharing (CORS)文档:

  

跨域资源共享(CORS)为在一个域中加载的客户端Web应用程序定义了一种与不同域中的资源进行交互的方式。借助Amazon S3中的CORS支持,您可以使用Amazon S3构建富客户端Web应用程序,并有选择地允许跨源访问到您的Amazon S3资源。

您需要向S3存储桶添加策略,以允许来自54.148.x.x的网页访问存储区资源。