JSONP是否需要修改服务器?

时间:2010-07-21 01:33:54

标签: ajax jsonp ria server-side

据我所知,jsonp是一种绕过同一原始政策的技巧。您基本上是在脚本标记中引用您的json服务器端点,因为脚本标记不受SO策略的约束。

我的问题是:假设服务器有一个提供json的端点,服务器上是否需要进行任何修改才能在客户端使用jsonp?

我想不,但想确定......

1 个答案:

答案 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。