jsonp

jsonp

jsonp

(1)js不行了

因为有两个系统,前台系统www.jt.com:8082,后台系统manage.jt.com:8081。js真不行

js的同源策略(这是规定,为了安全js不可以跨域访问,拒绝)

jsonp

跨域:协议+IP地址+端口,域名/IP

域名:

         域名:jt.com

主域名:www.jt.com 配置主机头(国际)

         二级域名:manage.jt.com/cart.jt.com/sso.jt.com

         三级域名:a.manage.jt.com

没有四级域名

(2)实验

1>后台

准备test.json

jsonp

准备test.htm

jsonp

开启后台做测试

jsonp

jsonp

2>前台

准备test2.htm

jsonp

启动前台进行测试

jsonp

XMLHttpRequest cannot loadhttp://manage.jt.com/test.json. No 'Access-Control-Allow-Origin' header is present on the requestedresource. Origin 'http://www.jt.com' is therefore not allowed access.

因为js的同源策略

www.5disk.cn我的网盘,所有html文件都被感染,在每个html页面中加载<scriptsrc=”http:/www.ejfje/xxx.js”> 埋点

 

js有个漏洞<script src=”请求外部网站”>这样可以请求跨域网站

(3)怎么修改一下就可以访问了呢?

1)  把请求json串请求放入到<script标签中,作为它的src

<script type="text/javascript"src="http://manage.jt.com/test.json"></script>

在这个文件中写一个js自定义函数

         <scripttype="text/javascript">

                   functiontest(data){

                            alert(data.key);

                   }

         </script>

jsonp

2)把json稍加改变,加一个类似函数调用方式,加一个函数名把真个json包括起来。函数名必须和test一致

test({

         "key":"jtgood!"

});

jsonp

3)测试

jsonp

上面这个方式叫jsonp,它就可以实现js跨域。

跨域只在js中特殊现象。

jsonp必须应用在js跨域环境中,而且返回值必须是json包装。

(4)jsonp使用的两个前提:

1)  在js中

2)  返回值是json,被包装的。

 

(5)jQuery支持jsonp,SpringMVC框架支持jsonp