у нас есть сайт с Iframes, указывающими на динамические URL-адреса (при вводе пользователем).В случае 404/500 или любой другой ошибки мы хотим заменить источник Iframe другим дружественным другим URL-адресом.
Так что, похоже, вы создаете своего рода «браузер вweb page. "
Для этого мы можем использовать событие onerror, чтобы определить, когда у динамических сайтов возникают проблемы.(затем, в случае проблем, замените URL-адрес iframe)
Да, за исключением немногих вещей , имеющих события ошибки.Я предполагаю, что вы знаете об этом из ваших комментариев к другим ответам.Если я вас правильно понимаю, вы говорите об использовании фиктивного элемента script
для первой загрузки URL-адреса (как сценария, даже если это не скрипт) и определения допустимости URL-адреса с использованием onload
/ onerror
обработчики для элемента script
(onerror
не будет запускаться при ошибке сценария, только при сетевой ошибке).
Это работает также для междоменных URL-адресов, однако может бытьслучай, когда динамический URL может быть вредоносным и возникает такая проблема безопасности, когда вредоносный код будет выполняться в том же фрейме, в том же домене нашего веб-сайта.
Верно ли это предположение?
Ваше предположение верно.Если URL действительно содержит скрипт, он будет выполняться в браузере пользователя в том же домене, что и ваш сайт.
Есть ли какое-либо решение для этого?
Aпростой обходной путь может заключаться в том, чтобы сделать что-то наподобие того, что делает jsfiddle.net ... иметь отдельный поддомен, выступающий в качестве «брандмауэра» между сторонним контентом и вашим реальным доменом.
Есть ли другие предложения?
Хак с предзагрузкой скрипта - это просто хак.Он незаконно присваивает тег script и делает ненужные запросы.Я бы, вероятно, изучил использование XHR для запуска HEAD-запроса или легкое прокси на стороне сервера.