跨域问题::使用aws ec2,s3和cloudfront

时间:2016-07-13 07:45:32

标签: amazon-s3 amazon-ec2 cross-domain amazon-cloudfront scorm2004

该产品是elearning LMS - 托管在amazon ec2服务器上,内容(视频,scorm包)将从s3服务器提供。

LMS EC2的链接是:myname.company-name.com s3存储桶的链接是:s3-name.company-name.com

Scorm软件包希望从s3服务器提供服务,但由于跨域限制(浏览器)限制scorm API通过HTML框架元素进行通信。 (甚至尝试过iframe元素)

是否有办法配置s3存储桶名称(cname)或cloudfront cname,以满足上述目的。

注意:即使我们将带有云端分发的s3附加说:s3存储桶名称为cloudfront网址(AWS格式):。clouddont.net并尝试将cname指向cloudfront发布,与ec2实例名称相同

但是,ec2文件托管服务器端脚本,开发代码和通过s3提供的所有内容。因此,无法将所有ec2路径重定向到cloudfront cname或s3。

仅限s3-name.company-name.com这样的内容网址应重定向到s3,而不是所有ec2实例文件都重定向到cloudfront cname。是否有aws服务配置的解决方法,以便通过ec2解决跨域问题从s3和服务器文件提供内容?

注意:除了aws服务配置灵活性之外 - 上面给出的ec名称和s3桶名称格式是为了修复(不可更改)

非常感谢!

1 个答案:

答案 0 :(得分:0)

我通常通过将SCO的index.html指向S3上的资源来解决这些问题,以解决您遇到的跨域问题。 这允许从您的A域托管index.html,从B域加载资源和资源,并允许JavaScript到JavaScript API继续正常工作。与此同时,您仍然可以获得缓存优势,甚至可以共享通用脚本,图像和其他资产以节省带宽。 我也路径它们//不是http(s)://所以它可以独立于协议工作。请注意,如果您为本地文件系统部署发布了这些内容,则会因file:// vs //而出现问题。因此,一个通用的解决方案可能需要一些其他发布选项或使用其他类型的动态加载器。

或者,也有一些IFRAME黑客可以解决这个问题。这是我通常不会提倡的事情。

提到的两个选项通常都需要重新部署,但结果却会有更小的SCO。一个imsmanifest.xml,包含一个index.html和所有文件夹和文件。