我了解jsonp是一种绕过相同原始政策的技术。基本上,您在脚本标签中引用json服务服务器端点,因为脚本标签不受SO策略的限制。
我的问题是:假设服务器具有一个为json提供服务的终结点,是否需要对服务器进行任何修改才能在客户端中使用jsonp?
我想不,但是想确定。
是的,JSONP呈现时略有不同,因此您的服务器需要支持它。
JSON看起来像这样:
{ "name": "value" }
JSONP看起来像这样:
functionName({ "name": "value" });
如果您使用的是任何支持,都可以解决,但与仅支持JSON并不相同。当服务器收到请求时,例如: http://example.com/json?callback=functionName,上面就是您应该呈现的内容,因为它在页面中的外观是这样的:
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。