我在连接最近了解 JSONP 的一些点时遇到了麻烦。这是我的理解:
为什么可以通过 JSONP 接收跨域数据,但如果通过 JSON 接收则不行?
是否假设 JSON 倾向于允许 XSRF 而 JSONP 不允许?如果是这样,除了 JSONP 是某种事实上的数据格式,永远不会提供支持 XSRF 的数据之外,还有其他原因吗?为什么是 JSONP 而不是 XML 上的一些任意根标记?
预先感谢您的回答,请在无法弄清楚这一点后让我的大脑重新工作。
请您参考如下方法:
我不知道 JSONP 是安全的看法是如何产生的,但请看
JSON-P is, for that reason, seen by many as an unsafe and hacky approach to cross-domain Ajax, and for good reason. Authors must be diligent to only make such calls to remote web services that they either control or implicitly trust, so as not to subject their users to harm.
和
The most critical piece of this proposal is that browser vendors must begin to enforce this rule for script tags that are receiving JSON-P content, and throw errors (or at least stop processing) on any non-conforming JSON-P content.
两个引述都来自 http://json-p.org/ .
包含一些有关 JSONP/安全性的有用信息的其他链接:
所有这些都说明了两件事——基本上它不被认为是“安全的”,但有一些关于如何使它“更安全”的想法......尽管大多数想法依赖于标准化和特定的检查逻辑来构建到浏览器等中。