尝试访问 iframe 内容(不同的子域);尝试设置 CORS
Posted
技术标签:
【中文标题】尝试访问 iframe 内容(不同的子域);尝试设置 CORS【英文标题】:Attempting to access iframe contents (different subdomain); tried setting up CORS 【发布时间】:2012-12-29 21:53:17 【问题描述】:我在domain.com
托管一个文件,其中包含一个iframe,其文档托管在s3.domain.com
。我正在尝试访问 iframe 的内容,但是收到以下内容:
不安全的 javascript 尝试从 URL http://domain.com/ 的框架访问 URL http://s3.domain.com.s3.amazonaws.com/file.html 的框架。域、协议和端口必须匹配。
我理解这样做的原因。我找到了两种解决方法。
-
由于我拥有这两个文档,我可以将域属性设置为允许访问,如下所示:
document.domain = 'domain.com';
使用 CORS 允许访问托管在 S3 存储桶中的文档
我更愿意这样做,但是这样做有困难。 我的存储桶的 CORS 配置文件目前如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
</CORSRule>
</CORSConfiguration>
但是,这仍然会导致错误。我确定我错过了什么,但不确定是什么。
任何建议将不胜感激。 谢谢。
【问题讨论】:
【参考方案1】:使用 CORS 浏览器通常会执行预检请求(OPTIONS
方法)。可能您还必须允许所有标头以确保正确的预检请求处理:
<AllowedHeader>*</AllowedHeader>
另见here。
【讨论】:
运气不好。如果有帮助,这里是来自 iframe 内容的示例响应标头:cl.ly/image/3C2n2v3t3G37 看起来您根本没有收到 CORS 标头响应。至少应该有一个 Access-Control-Allow-Origin 标头。你确定它在 S3 中设置正确吗? 抱歉,我不知道为什么 S3 没有在您的配置中发出 CORS 标头。您可以尝试在亚马逊上询问。以上是关于尝试访问 iframe 内容(不同的子域);尝试设置 CORS的主要内容,如果未能解决你的问题,请参考以下文章