zoukankan      html  css  js  c++  java
  • 前端复习-03-接上面ajax跨域问题的解决与探索

    废话不多少 。。我估计一万个人都搞不清楚 什么是跨域 然后就被这堵墙无情的挡住了。。我尝试了很多办法解决这个问题。后来再慕课网上的一个老师的ppt那里看到一张图 我觉得 能记住这张图的话 应该就算是深入浅出的了解了跨域了吧。

    解决跨域这个遗留问题现在我所知道 常用的有三种方法这里 挨个复习和记录一下。

    1.使用代理解决。

    使用代理解决 其实很好理解。打个比方说,我要请求的json地址在我的阿里云上面,然后我现在在使用本地测试。去请求服务器上面的json数据,这不用看肯定就是跨域了。怎么办呢,如果我使用代理的思路来解决问题。它会变成 首先我在本地架设了一个xampp,然后我丢了一个 python脚本在本地,我要请求数据的时候 首先发送这个数据到本地的这个python脚本  这个python脚本在接受并保存了这些参数之后使用 著名的urllib2模块 带上这些参数向远端的服务器发送请求 然后得到服务器返回的数据 然后再由这个脚本 返回给本地的js文件  js再负责实施更新数据。。这样听上去没什么难的地方,但是这么说的话 脚本与脚本之间似乎是一个同步操作,不太清楚 太大的数据会不会很大程度的影响性能。我也没尝试过过大的json包。

    2.使用jsonp解决跨域问题

    这里按照我的理解来说的话是,灵活运用了<script>标签可以 跨域请求文件数据的一个特点。这是显然的,不然我们使用的各大厂商的CDN是怎么做到的呢。。所以如果我在本地用<script>标签调用服务器端的js文件其实就可以了,然而这个服务器端提供的文件则是服务器封装好的json文件 根据前端的需要动态添加的。 虽然听起来有点绕 不过好消息是jquery的.ajax()方法是默认支持jsonp的方式的。

    dateType:'jsonp',
    
    //这里随意给jsonp一个值 用来做key
    jsonp:'callback',

    然后后台就可以来获得这个callback name的值了

    jsonDate = method.GET[callback];
    //这个jsonDate就是数据了
    result = jsonDate

    而且jsonp 只支持get方法。 而且jsonp 只支持get方法。 而且jsonp 只支持get方法。

    3.使用XMLHttpRequest版本2.

    这个。。。这个基本不推荐使用 因为大量兼容性的问题。我还在测试中。

    这篇文暂时先这样吧。学习到新的 再来修改一下。

  • 相关阅读:
    [设计模式]之依赖倒置
    CSS的三种使用方式
    CSS的语法结构
    学习 jQueryMobile 第一个程序
    初识 GoogleMap
    程序员考试
    程序员考试
    CSS学习
    认识CSS
    开始忙一段时间
  • 原文地址:https://www.cnblogs.com/piperck/p/4936330.html
Copyright © 2011-2022 走看看