【发布时间】:2010-11-18 15:03:30
【问题描述】:
我正在阅读 this 比较 XML 和 JSON 的文章,在 cmets 部分,用户提到需要使用“本地代理”来访问 XML。
有人能解释一下本地代理在这种情况下的含义吗?我假设他的意思是 Javascript,但我愿意理解其他语言(C# 等)中可用的解析器
【问题讨论】:
标签: c# javascript xml json
我正在阅读 this 比较 XML 和 JSON 的文章,在 cmets 部分,用户提到需要使用“本地代理”来访问 XML。
有人能解释一下本地代理在这种情况下的含义吗?我假设他的意思是 Javascript,但我愿意理解其他语言(C# 等)中可用的解析器
【问题讨论】:
标签: c# javascript xml json
JavaScript 有一个Same Origin Policy,它可以防止您访问来自其他域的内容。这会阻止 XMLHttpRequest 对象从其他域检索 XML 文件的内容。
本地代理只是一个简单的文件,它只是将请求从您的域重新路由到另一个域并获取内容。这样就可以满足相同的原始策略。
JSON 不受限制的原因是 JavaScript、Image 和 CSS 文件可以从其他域引用。因为可以从其他域加载 JavaScript 文件,所以我们可以使用JSONP(带 Padding 的 JSON)来获取内容。
大多数人都同意 JSONP 不安全,因为任何内容都可以注入到 JavaScript 文件中。您只需要相信您的来源,他们不会在网页中注入任何不良内容(广告、弹出窗口、跟踪内容等)。
【讨论】:
这与 JSONP 相关(正如用户在他的评论中所说),它基本上定义了 JavaScript 执行远程源 <script src="http://url.com/file"></script> 中提供的任何内容的能力,并使浏览器能够从远程源检索数据。
我自己不喜欢 JSONP 术语,因为您也可以执行 XML,所以用户的评论实际上是错误的。您可以在服务器上返回类似 run('<some xml></some xml>') 的内容,然后使用内置的 JavaScript XML 解析器来获取您需要的数据 - 它不需要是 JSON。
【讨论】: