我正在開發一個應用程序,檢查我的數據庫是否已更新,如果是,我的應用程序顯示新值。服務器發送事件 - 跨域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(),但是這對我的問題來說似乎是一個很好的解決方案。謝謝 –