背景
最近在学习Vue 但是教程中使用的是线上的接口 所以就不可避免地有跨域的问题 但是教程中解决跨域又是引用的别人的库 所以我就想着 自己封装一个jsonp的函数
关于JSONP 也就是利用了script不受同源策略限制 被某些高手发现 然后广为流传
在我的理解 主要是在全局声明了一个函数 在get请求的时候和后端约定一个名字 例如 http://write.blog.csdn.net/mdeditor?mycallback=helloworld
在这里mycallback是需要和后端约定好的 否则是不奏效的 做过后端的都知道 获取queryString上的键值对 这里的key mycallback 就是开发时就约定好的一个名称
!!!如果想要跨域调取别人的接口 这里的key一定是要和约定的一致的
!!!如果想要跨域调取别人的接口 这里的key一定是要和约定的一致的
!!!如果想要跨域调取别人的接口 这里的key一定是要和约定的一致的
看了别人的代码 (https://github.com/webmodules/jsonp)所以我就说一下我这菜逼的思路
1:首先我们需要知道JSONP只能用于GET请求
2:其次我们的key约定好了的一定得一致
3 : 这个库利用的就是动态创建script标签 来跨域获取一段JS 其实就是执行你全局定义的
….感觉自己还是说不清楚 那就贴代码吧
在代码里 因为后端约定的是jsonpCallback 所以我这里就用了它
在这里还有一点可以提一提 假如别人的接口是判断了请求头里的host refer…等等的 则前端不管怎样都是拿不到数据的了
需要后端做代理才可以了 代理就是你在你的服务器做一个方法 设置你的host refer…去欺骗别人的接口…..end
今天很残酷 明天还是很残酷