首页  >  文章  >  后端开发  >  如何用JSONP克服跨域JSON通信?

如何用JSONP克服跨域JSON通信?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-22 14:42:50714浏览

How to Overcome Cross-Domain JSON Communication with JSONP?

JSONP:启用跨域 JSON 通信

由于同源策略,跨域 JSON 通信提出了挑战。 JSONP (JSON with Padding) 的引入是为了解决这个问题。

创建 JSONP 回调 API

要创建 JSONP 回调 API,您需要:

  1. 接受回调参数:接受 GET 请求中的“回调”参数。
  2. 将数据包装在回调函数中:环绕您的 JSON 数据以及请求参数中指定的回调函数。

PHP 中的示例:

<code class="php"><?php
$data = '{}';

if (array_key_exists('callback', $_GET)) {
    header('Content-Type: text/javascript; charset=utf8');
    header('Access-Control-Allow-Origin: http://www.example.com/');
    $callback = $_GET['callback'];
    echo $callback . '(' . $data . ');';
} else {
    header('Content-Type: application/json; charset=utf8');
    echo $data;
}
?></code>

此代码发送一个 JavaScript 文件,该文件调用以 JSON 数据作为第一个参数的指定回调函数。

使用 JSONP 服务

使用 JSONP 服务:

  1. 定义回调函数:创建一个 JavaScript 函数来处理 JSON 数据。
  2. 包含 JSONP 服务脚本:插入 <script>以服务 URL 和回调函数名称作为“callback”参数的标签。</script>

示例:

<code class="html"><script>
    function receiver(data) {
        console.log(data);
    }
</script>
<script src="data-service.php?callback=receiver"></script></code>

以上是如何用JSONP克服跨域JSON通信?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn