我对同源政策有疑问...
我有使用 JSON 和 XML 数据的 JavaScript 代码。我知道我需要将 JSON 更改为 JSONP,因为我的服务器位于不同的域中,但我是否只在客户端这样做?那么 XML 数据呢?也可以以某种方式跨域加载吗?
最后,是否有任何好的网站可以深入解释这一点,并附有示例?
我对同源政策有疑问...
我有使用 JSON 和 XML 数据的 JavaScript 代码。我知道我需要将 JSON 更改为 JSONP,因为我的服务器位于不同的域中,但我是否只在客户端这样做?那么 XML 数据呢?也可以以某种方式跨域加载吗?
最后,是否有任何好的网站可以深入解释这一点,并附有示例?
在 jsonp 响应中编码您的 XML,然后让您的客户端将其提取并解释为 XML。
您必须修改服务器。您可以将 JSONP 的原理用于 XML。你只需要传递一个字符串:
例如,假设您的服务器端程序位于 /xmlp 。您传递一个callback
参数,然后脚本将 XML 输出包装在其中。
例如
/xmlp?callback=mycall
输出:
mycall('<root><el attr="value"/ ></root>');
mycall
然后在客户端解析 XML(传递到 JavaScript函数)。
一旦您的数据源位于不同的域中,您就必须使用 JSONP 来获取数据。这适用于 JSON 和 XML 数据。JSONP 只是一种表示法,它使您可以提供回调函数,并在远程调用完成后立即调用它。数据作为回调参数提供。
当然,您的 API 必须支持 JSONP,只要对 API 的请求包含“?callback=f”,它就必须返回类似
{ f(data); }
而 f - 是在您的页面某处定义的函数。
所以,基本上当 API 调用完成后,你的回调函数就会被调用。
您有多种选择来使用来自不同来源的 API