Я разрабатываю приложение, которое проверяет, обновлена ли моя база данных, и если это так, мое приложение отображает новые значения.Сервер отправил события - междоменное 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.
Так эта проблема имеет что-то делать с кросс-происхождения проводки, даже если Access-Control-Allow-Origin имеет подстановочные. Любой способ сделать эту работу в Safari?
Решение 1. HTML-файл должен запускаться с жесткого диска (например, виджет в браузере). Решение 3. Пользователь может предоставить параметры для стилизации, поэтому с помощью iFrame невозможно стилизовать элементы из другого источника. Кажется, мне нужно будет найти решение 2. –
@TomBroucke iframe может быть невидимым. – Kornel
Да, я раньше не использовал postMessage(), но это похоже на очень хорошее решение моей проблемы. благодаря –