如何在HTTPS页面中从IE呈现XML?

How to Render XML from IE in a HTTPS Page?

提问人:John Saunders 提问时间:5/7/2014 更新时间:5/7/2014 访问量:160

问:

我有一些高级用户需要查看事务的原始 XML。我以为我可以在源页面上有一个指向新页面的链接(带有 target=“_blank”),该页面将使用 ,将标头设置为 和 “text/xml”。Response.WriteContent-DispositioninlineResponse.ContentType

这在 FireFox 和 Chrome 中效果很好,但在 IE10 中,我收到有关“您只想查看安全交付的网页内容吗?

研究表明,当页面包含“混合内容”时,会显示此消息。也就是说,当某些内容在“https”中,而某些内容在“http”中时。在我的方案中,情况并非如此,因为整个内容只是 XML 文档,其中甚至不包含对“http”的引用。

我找到了几篇关于此的文章,他们建议将页面更改为仅使用 https,或者在不提示的情况下将 IE 安全设置更改为“启用”混合内容:

但是,同样,我在“页面”上没有“http”内容!

如何在没有此提示的情况下在IE中显示“原始”XML内容?

asp.net xml internet-explorer-10

评论

0赞 Adam Marshall 5/7/2014
XML 文档中的架构规范是否具有 http?
0赞 John Saunders 5/7/2014
文档中没有命名空间。
0赞 Adam Marshall 5/7/2014
如果你说不会怎样?什么没有显示?什么?
0赞 John Saunders 5/7/2014
我不确定什么没有显示 - 我无法重现它。要求是没有安全警告,否则不会使用代码。

答:

1赞 mnsr 5/7/2014 #1

我为我制作的内部调试应用程序这样做了。它在 IE 中工作,没有任何问题/弹出窗口。但是,它并不是真正的“原始 XML”,而更像是 xml -> html,以纯文本形式显示在 div 中(尽管看起来仍然像 XML)。我使用 webapi 制作了它,也使用了 angularjs,但您可以将 angular 更改为直接 jquery。 不确定你是否只是在追求一个直接的原始XML答案,但如果你只想以文本形式显示XML,这应该对你有所帮助,或者至少给你一些灵感,哈哈:

API 操作:通过 Ajax 返回 XML。webresponse().response = 包含 xml 的字符串。

public HttpResponseMessage GetResponse(RequestDTO requestDTO)
{
    return new HttpResponseMessage()
    {
        Content = WebResponse(requestDTO).Response
    };
}

角度部分:

$http.post('api/getresponse', requestData)
    .success(function (data) {
        $scope.response.xml = data;
    });

HTML 部分:

<h3>XML Response</h3>
<pre highlight="response.xml" class="xml response"></pre>


编辑

要回答您的问题,请执行以下操作:

“highlight”是一个指令,我想我最初这样做是因为我要尝试添加代码突出显示,但从未这样做过。但它所做的只是:

angular.element(elem).text(value);

等效于函数。$(jquery).text(value);

至于 xml/response 类,它所做的只是 ,并返回为XDocument.Parse(xml)new StringContent();

从我的代码中编辑的片段:

protected ResponseDTO WebResponse(RequestDTO requestDTO)
{
    //....
    var response = myRequest.GetXmlResponse(webResponse);

    return new ResponseDTO()
    {
        Headers = new StringContent("....");
        Response = new StringContent(response.ToString())
    };
}
public XDocument GetXmlResponse(HttpWebResponse webResponse)
{
    return XDocument.Parse(xmlResponse(webResponse, Encoding.UTF8));
}

ajax 返回为Content-Type: text/plain; charset=utf-8

评论

0赞 John Saunders 5/7/2014
请包括 和 类,并且是解决方案的重要组成部分吗?xmlresponsehighlight="response.xml"