返回jsonp而不是json

时间:2014-12-09 03:03:21

标签: php json

我慢慢实现jsonp与json相比,因为我读jsonp方法更安全,它可以防止CORS。所以在我的服务器端,jsonp应该是什么样的?

我为json做的只是

$arr = array();
$arr[] = {'a'=>'apple','b'=>'ballon'}

json_encode($arr);

如果是jsonp怎么办?

1 个答案:

答案 0 :(得分:3)

JSONP不会“阻止CORS”,JSONP是一种解决方法,通过明确要求服务器与Javascript协作来启用来自第三方域的GET请求。有效的方式是请求Javascript传递它想要执行的回调函数的名称。然后,服务器通过在此回调函数中包装其响应来进行协作。当此响应作为嵌入代码返回到浏览器时,将使用来自服务器的数据执行回调。

如果请求提供回调名称foo,则响应应如下所示:

foo({"a": "apple", ...});

所以:

printf('%s(%s);', $_GET['callback'], json_encode($arr));