提问人:John Saunders 提问时间:5/7/2014 更新时间:5/7/2014 访问量:160
如何在HTTPS页面中从IE呈现XML?
How to Render XML from IE in a HTTPS Page?
问:
我有一些高级用户需要查看事务的原始 XML。我以为我可以在源页面上有一个指向新页面的链接(带有 target=“_blank”),该页面将使用 ,将标头设置为 和 “text/xml”。Response.Write
Content-Disposition
inline
Response.ContentType
这在 FireFox 和 Chrome 中效果很好,但在 IE10 中,我收到有关“您只想查看安全交付的网页内容吗?
研究表明,当页面包含“混合内容”时,会显示此消息。也就是说,当某些内容在“https”中,而某些内容在“http”中时。在我的方案中,情况并非如此,因为整个内容只是 XML 文档,其中甚至不包含对“http”的引用。
我找到了几篇关于此的文章,他们建议将页面更改为仅使用 https,或者在不提示的情况下将 IE 安全设置更改为“启用”混合内容:
- http://blog.httpwatch.com/2009/04/23/fixing-the-ie-8-warning-do-you-want-to-view-only-the-webpage-content-that-was-delivered-securely/
- http://blogs.msdn.com/b/ieinternals/archive/2009/06/22/https-mixed-content-in-ie8.aspx
- http://blog.httpwatch.com/2009/09/17/even-more-problems-with-the-ie-8-mixed-content-warning/
但是,同样,我在“页面”上没有“http”内容!
如何在没有此提示的情况下在IE中显示“原始”XML内容?
答:
我为我制作的内部调试应用程序这样做了。它在 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
评论
xml
response
highlight="response.xml"
评论