我爱编程

JSONP && CORS

2018-03-27  本文已影响0人  YangJeremy

跨域必须先知道同源策略。

JSONP

html中script标签可以引入其他域下的js,比如引入线上的jquery库。利用这个特性,可实现跨域访问接口。需要后端支持

echo $cb . '&&' . $cb . '(' . json_encode($ret) . ')';
定义数据处理函数_fun
创建script标签,src的地址执行后端接口,最后加个参数callback=_fun
服务端在收到请求后,解析参数,计算返还数据,输出 fun(data) 字符串。
fun(data)会放到script标签做为js执行。此时会调用fun函数,将data做为参数。
举个例子:
1.script标签会把资源下载下来作为资源取运行


1

2.routerjs这是后端接口


后端接口

3.在页头创建script标签然后去加载


3

4.这就是里面的数据


这就是里面的数据.jpg

5.这是后端的处理,去解析callback这个参数


5

6.当然我们可以进行一下扩展


6

7.让他加载之后又立刻删掉


7

这就是JSONP的过程。

CORS

CORS 全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 ajax 跨域请求资源的方式,支持现代浏览器,IE支持10以上。 实现方式很简单,当你使用 XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略。
会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。所以 CORS 的表象是让你觉得它与同源的 ajax 请求没啥区别,代码完全一样。

上一篇 下一篇

猜你喜欢

热点阅读