我刚刚将自己的博客从wordpress改为django-zinnia。百日草在django-admin中使用WYMeditor(https://github.com/wymeditor/wymeditor)iframe用于博客文章和内容输入,而现在由于同源问题我无法访问iframe。我在浏览器控制台中看到的错误是:
Blocked a frame with origin "http://www.mydomain.com" from accessing a frame with origin "http://mybucket.s3.amazonaws.com".
Protocols, domains, and ports must match.
WYMeditor.WymClassSafari.initIframe
onload
我可以在我的CORS配置中为存储桶更新参数以允许iframe加载交叉源吗?我已经
了 <AllowedOrigin>http://www.mydomain.com</AllowedOrigin>
在我目前的CORS规则中:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>http://mydomain.herokuapp.com</AllowedOrigin>
<AllowedOrigin>http://mydomain.com</AllowedOrigin>
<AllowedOrigin>http://www.mydomain.com</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Content-*</AllowedHeader>
<AllowedHeader>Host</AllowedHeader>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
答案 0 :(得分:5)
CORS标头不会影响Safari中iframe的同源策略。
您可以使用postMessage
在框架之间进行通信,也可以将mydomain.com
中的子域附加到S3存储桶,并通过设置document.domain
来放宽同源策略(此方法仅适用要在同一个域的子域之间进行通信,它在不同的域之间不起作用。)
您可以在StackOverflow上从此答案中了解有关iframes通信的更多信息: