你所理解的同源和跨域

Ajax:属于同源策略
JSONP:属于跨域策略(但是解决跨域的方案不止JSONP,还有更多的方案,JSONP只是最常用的一种)

同源
  • 协议
  • 域名
  • 端口号
    完全一致才属于同源,否则就是跨域
JSONP原理
  • 在script的世界中,没有同源跨域这一说,只要你给我SRC属性中的地址是一个合法地址,SCRIPT都可以把对应的内容请求回来;

JSONP就是利用了SCRIPT这个原理

  • 1)我们首先把需求请求的数据,跨域的API数据接口地址,赋值给script的SRC中;
  • 2)把当前页面的某一个函数名当做参数值,传递给服务器(url问号传参的方式);
  • 3)服务器接收到请求之后,需要进行特殊的处理,把你传递进来的函数名和它需要给你的数据拼接成一个字符串

例如:我们传递进去的函数是fn,服务器准备好的数据是fn([{“name”:“godfery”}]) ->‘我传递的函数名(需要给我们的数据)’

  • 4)最后服务器把准备的数据通过HTTP协议返回给我们客户端,客户端发现其实就是让我们的fn执行,而且还给fn传递了一堆数据,那些数据就是我们想要的.
代码示例
<script type="text/javascript" charset="utf-8" >

    function fn(data){
        console.log(data)
     }

</script>

// jsonp方式 callback后面的fn就是我传递给服务器的函数,名字可以自己任意取
<script type="text/javscript" charset="utf-8" src="http://matchweb.sports.qq.com/kbs/calendar?columnId=100000&callback=fn"></script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值