Quiz

解释JSONP 如何工作(以及它为什么不是真正的 Ajax)

Topics
JavaScriptNetworkingSecurity
在GitHub上编辑

JSONP (JSON with Padding) 是一种通常用来绕过网络浏览器中的跨域策略的方法,因为不允许从当前页面的 Ajax 请求到跨源域。

JSONP 工作方式是通过一个 <script> 标签向一个跨源域提出请求,通常使用一个 callback 查询参数, 例如:https://example.com?callback=printData。 然后,服务器将把数据填充到一个名为 printData 的函数中,然后返回给客户端。

<!-- https://mydomain.com -->
<script>
function printData(data) {
console.log(`My name is ${data.name}!`);
}
</script>
<script src="https://example.com?callback=printData"></script>
// 从 https://example.com?callback=printData 加载的文件
printData({ name: 'John Doe' });

客户端必须将printData函数设在其全局范围内,当收到跨源域的响应时,该函数将由客户端执行。

JSONP 可能是不安全的,并涉及一些安全问题。 因为 JSONP 真的是 JavaScript,它可以做所有其它 JavaScript 可以做的事情,所以你需要信任 JSONP 数据的提供者。

目前前端开发领域,CORS 是推荐的方法,JSONP 被视为一种 hack(破解)。

在GitHub上编辑