我在Amazon EC2实例上托管了一个RoR应用程序。实例具有公共IP但未分配弹性IP。应用程序指向使用Dreamhost的域。
我们使用Amazon S3存储通过Web应用程序上传的音频文件,并将这些文件加载回网站并在播放器中播放。
这是我面临奇怪问题的地方,有时文件播放正常,但有时会出错
请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原始
http://XX.XXX.XX.XXX
访问。
但同时如果我在我的应用程序之外的浏览器中复制粘贴S3 url它会加载。
为什么错误提供IP地址而不是说mydoamin.com因此不允许访问?
我猜这个问题是因为某些域/ IP配置。
答案 0 :(得分:2)
亚马逊上的弹性IP是保留给您的IP。没有它,每次停止和启动实例时,都会设置不同的IP。
您不必使用弹性IP,例如,您可以将域指向ELB(弹性负载均衡器)CNAME,它将在应用程序的一个或多个实例之间进行负载平衡时保持不变。
我不确定这与给出的错误有什么关系,详见answer:
网站B使用
Access-Control-Allow-Origin
告诉浏览器 某些域可以访问此页面的内容。默认情况下, 任何其他域都无法访问网站B的页面;使用ACAO 标题为特定域的跨域访问打开了一扇门。网站B应该使用
服务其网页Access-Control-Allow-Origin: http://sitea.com
似乎有问题的链接是带有显式IP的绝对路径,我不知道为什么会发生这种情况,请查看链接失败的页面源,并尝试弄清楚。