小编Jos*_*per的帖子

CloudFront、S3、CORS、OPTIONS 方法“缺少允许来源”

我有一个 S3 存储桶作为源,还有一个 CloudFront 发行版,从中提供流媒体 a/v。

我还有一个 EC2 实例,从测试域提供网页,该测试域使用 videojs 显示视频作为测试。

如果我启动 VLC 媒体播放器并使用 CloudFront URL 观看视频,我会看到并听到媒体。因此,如果我不必处理 CORS,则此配置确实可以满足内容。

但是,当我尝试从 EC2 实例的网页查看内容时,我遇到了 CORS 问题。

使用 Firefox 并观察开发人员工具中的“网络”选项卡,我发现 Firefox 可以毫无问题地获取初始 .mpd URL。但是,后续文件(*.cmfv、*.cmfa,全部嵌入在 .mpd XML 中)在预检检查(OPTIONS 方法调用)中显示“CORS 缺少允许来源”。引发 OPTIONS 请求的 GET 请求会出现 NS_ERROR_DOM_BAD_URI 错误,并且永远不会发送。

使用curl,我模仿了来自Firefox的请求:

curl -H "origin: https://my.happy.url" -H "referer: https://my.happy.url" -H "Access-Control-Request-Headers: range" -H "Access-Control-Request-Method: GET" -X OPTIONS -v https://gobbledygook.cloudfront.net/content/10%20Minutes%20Of%20Coding%20Torture_6.cmfv

我得到这样的回应:

> OPTIONS /content/10%20Minutes%20Of%20Coding%20Torture_6.cmfv HTTP/2
> Host: gobbledygook.cloudfront.net
> user-agent: curl/7.79.1
> accept: */*
> origin: https://my.happy.url
> referer: https://my.happy.url
> …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services cors amazon-cloudfront

6
推荐指数
1
解决办法
6134
查看次数