Как разместить XML в iframe с помощью JavaScript - PullRequest
1 голос
/ 21 сентября 2009

В основном я хочу опубликовать XML (с Content-Type text / xml) по URL-адресу и отобразить вывод непосредственно в браузере. Это должно быть сделано в iframe.

Можно ли опубликовать XML в iframe? Другими словами, можно ли изменить тип содержимого пост-запроса на text / xml? PHP4 также доступен при необходимости.

URL-адрес действия iframe должен остаться, потому что Результат содержит HTML-страницу с относительными ссылками ...

1 Ответ

2 голосов
/ 21 сентября 2009

Раньше было возможно document.open(mimetype) на iframe обратно в Netscape, но современные браузеры не поддерживают это (и в любом случае Netscape никогда не поддерживал XML).

Во многих браузерах вы можете установить для src iframe значение данных URI , например: data:text/xml,%3Celement%3Ehello%3C/element%3E, если документ не слишком длинный. Это не работает в IE, хотя. Таким образом, вам потребуется как минимум план резервного копирования для возврата на сервер:

<?php
    header('Content-Type: text/xml');
    echo($_REQUEST('xml'));
?>

Тогда, если XML был достаточно коротким, чтобы поместиться в URI, вы можете установить его src через:

iframe.src= 'http://www.example.com/echoxml.php?xml='+encodeURIComponent(xml);

Если XML может быть длинным, вам нужно использовать запрос POST, что означает отправку формы:

var idoc= iframe.contentDocument || iframe.contentWindow.document; // IE compat
idoc.open();
idoc.write('<form method="post" action="http://www.example.com/echoxml.php">');
idoc.write('    <textarea name="xml"></textarea>');
idoc.write('</form>');
idoc.close();
idoc.getElementsByTagName('textarea')[0].value= xml;
idoc.getElementsByTagName('form')[0].submit();

Это все стоит? Если вы не используете XSL, то неструктурированное представление XML, которое вы получите в большинстве браузеров, вероятно, будет весьма скудным. В старых / более простых браузерах, которые вообще не отображают XML, вам будет предложено загрузить файл XML.

И опасно позволять кому-либо вставлять контент XML в ваш контекст безопасности. например. если бы они сделали возвратный документ, содержащий содержимое сценариев XHTML, вы были бы уязвимы для атак с использованием межсайтовых сценариев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...