Раньше можно document.open(mimetype)
на IFRAME назад в Netscape, но современные браузеры дона» t поддерживает это (и Netscape никогда не поддерживал XML в любом случае).
Во многих браузерах вы можете установить src
iframe на data 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-скриптов, вы были бы уязвимы для межсайтовых сценариев.
Спасибо! Проблема в том, что мне нужно отправить Login-Data в Web-сервис, который возвращает простой HTML или 302-перенаправление на HTML-страницу. И учетные данные могут передаваться только с помощью запроса POST-запроса и Content-Type XML. И я не знаю, как этого добиться. Я пробовал CURL, который работает достаточно хорошо - единственный недостаток: возвращенный HTML содержит ссылки Image и Stylesheet-Links с относительными данными. И поскольку CURL все еще удерживает исходный путь сценария в строке местоположения, относительные пути не работают :-( – acme
Ах, ОК, вы хотите отправить тело запроса XML, это немного другое. Звучит немного странно, что он возвращает HTML с относительными путями, когда браузер никогда не может отправить запрос ... вам нужно было бы обработать возвращенный HTML-код для исправления адресов или добавить элемент ' ' после использования curl, что немного Если веб-служба является локальной, вы также можете использовать XMLHttpRequest на стороне клиента, чтобы отправить тело XML. –
bobince
Теперь я «решил» его, проанализировав возвращаемый html из curl и добавив базовый тег сразу после заголовка, Это довольно уродливо, но, по крайней мере, это работает - и, очевидно, это единственный способ сделать это. Еще раз спасибо! – acme