我正在开发一个应用程序,检查我的数据库是否已更新,如果是,我的应用程序显示新值。服务器发送事件 - 跨域safari
客户端:
if(typeof(EventSource)!=="undefined") {
var eSource = new EventSource("http://mydomain.org/app.php");
eSource.onmessage = function(event) {}
}
服务器端:
<?php
header("Content-Type: text/event-stream");
header("Cache-Control: no-cache");
header("Access-Control-Allow-Origin: *");
echo "data:Hello World\n\n";
?>
现在,一切都在Firefox和Chrome。该应用程序将在基于Safari的浏览器中运行。在Safari中,我得到
SECURITY_ERR: DOM Exception 18: An attempt was made to break through the security policy of the user agent.
所以这个问题已经是与跨域张贴,即使访问控制允许来源有一个通配符。任何方式使这项工作在Safari?
解决方案1:HTML文件必须从硬盘驱动器运行(如浏览器中的小部件)。 解决方案3:用户可以提供样式参数,因此使用iFrame时,不可能从另一个原点对元素进行样式设置。 看来我将不得不寻找解决方案2. –
@TomBroucke iframe可能是不可见的。 – Kornel
是的,我之前没有使用过postMessage(),但是这对我的问题来说似乎是一个很好的解决方案。谢谢 –