您好我正在尝试从我的网站上的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。
请帮助
答案 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
的网页访问存储区资源。