据我所知,jsonp是一种绕过同一原始政策的技巧。您基本上是在脚本标记中引用您的json服务器端点,因为脚本标记不受SO策略的约束。
我的问题是:假设服务器有一个提供json的端点,服务器上是否需要进行任何修改才能在客户端使用jsonp?
我想不,但想确定......
答案 0 :(得分:36)
是的,JSONP在呈现时略有不同,因此您的服务器需要支持它。
JSON看起来像这样:
{ "name": "value" }
JSONP看起来像这样:
functionName({ "name": "value" });
如果您使用的任何内容都支持它,那么您将被覆盖,但它与仅支持JSON不同。当服务器收到请求时,例如:http://example.com/json?callback=functionName
,上面是您应该呈现的内容,因为它在页面中的外观如下:
<script type="text/javascript" src="http://example.com/json?callback=functionName"></script>
这意味着需要返回运行的东西,例如,这是有效的:
<script type="text/javascript">
functionName({ "name": "value" });
</script>
如果你的服务器没有支持JSONP,那么实际上就是这样:
<script type="text/javascript">
{ "name": "value" }
</script>
...你会得到语法错误,因为那不是有效的JavaScript。