jsonp跨域

心已赠人 2023-06-05 05:56 69阅读 0赞

首先我们来说说什么是跨域

  1.   跨域:是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但是一般情况下不能这么做,它是由浏览器的同源策略造成的

   这里我们又会有一个问题 啥叫同源策略啊,那我们再来说说同源策略,

   首先什么叫同源呢 字面理解就是相同的起源,同源指的就是域名,协议,端口均相同

   那现在又有一个问题,为什么浏览器要有同源策略呢,我打个比方 。。。。。。。。。。嘀 嘀嘀 准备发车了

  1. 举个大栗子:你和你对象是一家 ,隔壁是老王一家,你每天可以回家和你对象做一些有趣的事情(你们懂得),要是老王也可以回你家和你对象做一些有趣的事情,那你能同意吗?
  2. 肯定不能啊,对吧(要是你就喜欢做一道绿光,那在下佩服)
  3. 整个栗子里,你家就相当于一个域名,而你和你对象就相当于域名里面的资源,而老王家也相当于一个域名,老王和老王对象相当于老王家这个域名下的资源,
  4. 正常情况下是肯定不能互相访问的,这就是同源策略所做的事情,让不同域名间不能乱访问互相的资源
  5. 但是我们能不能绕过同源策略访问到呢,当然可以啊,要是不可以的话,偷情这个词岂不是失去了意义,那现在我们来讲一种跨域的方法:jsonp
  6. jsonp是一种非正式的传输协议(注意他和json 轻量级的数据交换格式半毛钱关系都没有)
  7. 原理:利用了src不受同源策略的影响 ,可以访问其他页面的数据
  8. 大家需要注意一点:jsonp并不能解决所有的跨域问题,因为使用jsonp跨域需要被提供jsonp接口
  9. 步骤:1.创建一个全局函数
  10. function huidiao(data)\{
  11. console.log(data)\}
  12. 2.动态创建一个script标签
  13. var script1 = document.createElement("script")
  14. 3.给标签的src赋值 (即接口的url
  15. script1.src = "http:www.baidu.com?a=1&b=2&cb=huidiao"
  16. 4.将属性为callback值为全局函数名的键值对写到url的后面
  17. 注意 huitiao即为全局函数的名称 二者名字只要相对应就可以
  18. 大部分jonsp接口都为callback,百度的jsonp接口为cb
  19. 5.将标签插入到页面上
  20. document.body.appendChild(script1);
  21. 6.将标签加载完后删除
  22. script1.onload = function()\{
  23. this.remove()\}

-—————————————————————————————————————上————-面—————-见——解——如———-有—————错———-误——,——请——各——位——大————佬——-指———-正—————————————————————————————————————-

更多专业前端知识,请上 【猿2048】www.mk2048.com

发表评论

表情:
评论列表 (有 0 条评论,69人围观)

还没有评论,来说两句吧...

相关阅读

    相关 jsonp

    首先我们来说说什么是跨域       跨域:是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但

    相关 jsonp

    我是做的一个跨站显示信息!! 鄙人文化不高,代码不严谨,仅供参考! 题目:用户在a站访问过的商品足迹可以在登录b站之后查看足迹! 首先创建两个域名www.a.com

    相关 jsonp

    jsonp跨域 Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有”src这个属性的标签都拥有跨域的能力,比如`<script>、<img>、<

    相关 JSONP和CORS

    什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 同源策略 同源策略:域名、协议、端口均相同。 浏览器

    相关 jsonp

    域指的就是域名。 域名对应的是一个IP地址。 域名与IP地址的对应关系存储在域名服务器上。(DNS)   所谓跨域     1.就是跨域名,跨端口,跨协议