zoukankan      html  css  js  c++  java
  • Javascript跨域

    跨域:只要协议、域名或端口有任何一个不同,就定义为跨域。

    CORS(Cross-Origin Resource Sharing):即跨域资源共享。定义了在访问跨域资源时,浏览器和服务器该如何沟通。CORS的基本思想就是使用自定义HTTP头部

    让浏览器和服务器进行沟通,从而决定请求或相应是应该成功还是失败。

    通过CORS跨域:

    服务端对于CORS的支持,主要通过设置Access-Control-Allow-Origin来进行。如果浏览器检测到相应的设置,就可以允许AJAX进行跨域访问。

    例如:

    AngularJS中$http就是简单的XMLHttpRequest的封装。

    this.BASE_URL = "http://32.1.2.81:80/fgwservices/";

    this.getProjectSummary = function (year,type) {
          var deferred = $q.defer();
          var url = configService.BASE_URL + "data/detail.iproject.summary";
          $http.get(url).success(function (data) {
               var filter = jsonPath(data, "$.[?(@.year==" + year +"&@.type=="+type+")]")[0];
               deferred.resolve(filter);
           });
           return deferred.promise;
    };

    在后台方法中:

    response.addHeader("Access-Control-Allow-Origin","*");

    即可跨域访问。

    通过jsonp来跨域:

    jsonp也叫填充式json,是应用json的一种新方法。

    jsonp由两部分组成:回调函数和数据。回调函数就是当响应到来时应该在页面调用的函数,而数据就是传入回调函数时的json数据。

    在js中,我们直接使用XMLHttpRequest请求不同域上的数据是不可以的,但在页面上引入不同域的脚本文件是可以的,jsonp也正是利用这个来实现跨域的。

    例如:<script src="http://example.com/data.php?callback=dosomething"></script>

    CORS和jsonp方式对比:

    1)jsonp只能实现get请求,而CORS支持所有类型的HTTP请求;

    2)使用CORS可以使用普通的XMLHttpRequest发起请求和获得数据,比起jsonp有更好的错误处理。

    所以说,jsonp一般只在浏览器不支持CORS的情况下才使用。

  • 相关阅读:
    python的几个实例程序员节日快乐
    用python的time库写一个进度条
    用python绘画一些简单图片
    头文件板子
    Codeforces 606-C:Sorting Railway Cars(LIS)
    中南林业科技大学第十一届程序设计大赛- I:背包问题
    离散数学:用C语言来判断集合存在的二元关系
    中南林业科技大学第十一届程序设计大赛-C:有趣的二进制
    POJ 1611:The Suspects(并查集)
    POJ 2236:Wireless Network(并查集)
  • 原文地址:https://www.cnblogs.com/hxb2015/p/4606004.html
Copyright © 2011-2022 走看看