如何在HTTPS页面中从IE渲染XML?

时间:2014-05-06 23:11:35

标签: asp.net xml internet-explorer internet-explorer-10

我有一些高级用户需要查看事务的原始XML。我以为我可以在源页面上使用target(“_ = _ blank”)链接到一个新页面,该页面只使用Response.Write输出XML,并将Content-Disposition标头设置为{{1 }和inline到“text / xml”。

这适用于FireFox和Chrome,但在IE10中,我收到有关“您是否只想查看已安全发送的网页内容?”的安全警告。

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

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

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

如果没有此提示,我如何在IE中显示“原始”XML内容?

1 个答案:

答案 0 :(得分:1)

我为我做的内部调试应用做了这个。它在IE中工作,没有任何问题/弹出窗口。但是,真的"原始XML",但更像是xml - >显示在div中的html(仍然看起来像XML)作为纯文本。我使用webapi制作它,也使用了angularjs,但你可以将角度改为直线jquery。 不确定你是否只是在直接的原始XML答案之后,但如果你只是想以文本形式显示XML,这应该会帮助你或者至少给你一些灵感lol:

api action :通过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>

<小时/> 的修改

回答你的问题:

&#34;突出&#34;是一个指令,我想我最初是因为我将尝试添加代码突出显示,但从未这样做过。但所有这一切都是这样的:

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