🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
![](https://img.kancloud.cn/ae/fb/aefbb3ef3c2e29a120b2d170ef77041a_956x429.png) ![](https://img.kancloud.cn/44/f9/44f9609d3698871f626f47fa3ff6eecf_688x232.png) ![](https://img.kancloud.cn/3d/f1/3df1b0151a7e28971f537324c8c1bee1_320x44.png) ![](https://img.kancloud.cn/97/92/979287c721752f46e6fd39907a11cc92_650x260.png) ![](https://img.kancloud.cn/9b/5b/9b5bfb3be8d64d6efed0c19f3cba8a23_647x305.png) ![](https://img.kancloud.cn/d6/c1/d6c1f1dc7d7849736dc9dd6586d658d6_680x387.png) 问题: 只能支持get请求,别人做URL劫持,或者给我们返回的是木马病毒,安全性不高 ============================================ ### JSONP 首先,有一个概念你要明白,例如访问`http://coding.m.juejin.com/classindex.html`的时候,服务器端就一定有一个`classindex.html`文件吗?—— 不一定,服务器可以拿到这个请求,动态生成一个文件,然后返回。 同理,`<script src="http://coding.m.juejin.com/api.js">`也不一定加载一个服务器端的静态文件,服务器也可以动态生成文件并返回。OK,接下来正式开始。 例如我们的网站和掘金网,肯定不是一个域。我们需要掘金网提供一个接口,供我们来获取。首先,我们在自己的页面这样定义 ~~~ <script> window.callback = function (data) { // 这是我们跨域得到信息 console.log(data) } </script> ~~~ 然后掘金网给我提供了一个`http://coding.m.juejin.com/api.js`,内容如下(之前说过,服务器可动态生成内容) ~~~ callback({x:100, y:200}) ~~~ 最后我们在页面中加入`<script src="http://coding.m.juejin.com/api.js"></script>`,那么这个js加载之后,就会执行内容,我们就得到内容了。