zoukankan      html  css  js  c++  java
  • 关于浏览器跨域的一种实现--jsonp

      最近一直在搞python,前端技术荒废很久了,今天跟前端联调,设计到一个前端跨域的问题;前端人员告诉我可以用jsonp的方式实现,经他这么一提醒,也是豁然开朗。

      jsonp的实现方式我按照我的理解说一下:

      在浏览器层面上,有一个同源策略,这个策略限制了,一个域下的网页,去get一个其他域下的数据,做到不同域之间的数据隔离。

      但是html里面有写元素是可以获取其他域下的数据,比如,<img src='x x x.com/img/xxx/xxx.jpg' />  img标签就可以获取外域下的图片资源,

      同理,<script> 是可以获取外域下的脚本代码的:<script src='text/javascript' src='http://xxxx.com/xxxx/action.do?callback=showdata'/>

      服务器收到请求后,先封装页面想要的数据作为参数,然后使用callback传上的参数作为函数名,返回一段javascript脚本:

        would_data = getData()        #封装数据

        callback = request.callback      #获取回调函数

        return 'callback("%s")' % would_data  #返回一段脚本

      客户端本地构造请求url:http://xxxx.com/xxxx/action.do?callback=showdata ,其中showdata在本地预先定义一个,参数为想要的数据,这样当去服务器远程获取数据后,

      会自动调用本地的回调函数,会已传参的方式,获取到数据。这整个是jsonp的实现原理,其实并没有多么高深,我之前也怀疑过为什么不能去外域请求数据,但却可以获取到

      像<img><srcirt><css>这用的标签去访问外域数据,早研究下,就知道有这个好东西了。 ^ ^

      其实,像jquery这种框架早就支持这个东西了,type='jsonp' 就可以了,也不用带回调函数参数

  • 相关阅读:
    1033 To Fill or Not to Fill (25分)(贪心)
    CentOS(五)--Linux系统的分区概念
    Linux安装Oracle 11G过程(测试未写完)
    【VMware虚拟化解决方案】设计和配置VMware vCenter 5.5
    CentOS(四)--Linux系统的启动级别
    CentOS(三)--初识linux的文件系统以及用户组等概念
    CentOS(二)--初识linux的一些常用命令
    CentOS(一)--CentOS6.4环境搭建
    Linux c/c++图片传输功能(中级版)
    remote uptime 服务器程序
  • 原文地址:https://www.cnblogs.com/ruiqingliang/p/7489628.html
Copyright © 2011-2022 走看看