基本上我想将XML(带有Content-Type text / xml)发布到URL并直接在浏览器中显示输出。这必须在iframe中完成。
是否可以将XML发布到iframe?换句话说,Post-Request的Content-Type是否可以更改为text / xml?如有必要,也可以使用PHP4。
iframe-action的URL必须保留,因为Result包含一个带有相对链接的HTML页面......
答案 0 :(得分:2)
以前在Netscape中可以使用iframe上的document.open(mimetype)
,但现代浏览器不支持此功能(而且Netscape从不支持XML)。
在许多浏览器中,您可以将iframe的src
设置为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脚本内容的返回文档,则您很容易受到跨站点脚本攻击。