zoukankan      html  css  js  c++  java
  • Ajax--跨域访问的三种方法

    原文地址:http://www.cnblogs.com/mylove103104/p/4600779.html

    一、什么是跨域

    我们先回顾一下域名地址的组成:

    http:// www . google : 8080 / script/jquery.js

          http:// (协议号)

                   www  (子域名)

                 google (主域名)

                   8080 (端口号)

    script/jquery.js (请求的地址)

    * 当协议、子域名、主域名、端口号中任意一各不相同时,都算不同的“域”。

    * 不同的域之间相互请求资源,就叫“跨域”。

    比如:http://www.abc.com/index.html 请求 http://www.def.com/sever.php

    二、处理跨域的方法1 -- 代理(这个方法比较“笨” 故不做详细介绍)

    比如在北京(www.beijing.com/sever.php)和上海(www.shanghai.com/sever.php)各有一个服务器,北京的后端(www.beijing.com/sever.php)直接访问上海的服务,然后把获取的响应值返回给前端。也就是北京的服务在后台做了一个代理,前端只需要访问北京的服务器也就相当与访问了上海的服务器。这种代理属于后台的技术,所以不展开叙述。

    三、处理跨域的方法2 -- JSONP

    假设在http://www.aaa.com/index.php这个页面中向http://www.bbb.com/getinfo.php提交GET请求,那么我们在www.aaa.com页面中添加如下代码:

      var eleScript= document.createElement("script"); //创建一个script元素

      eleScript.type = "text/javascript"; //声明类型、

      eleScript.src = "http://www.bbb.com/getinfo.php"; //添加src属性 引入跨域访问的url

      document.getElementsByTagName("HEAD")[0].appendChild(eleScript); //在页面中添加新创建的script元素

    当GET请求从http://www.bbb.com/getinfo.php返回时,可以返回一段JavaScript代码,这段代码会自动执行,可以用来负责调用http://www.aaa.com/index.php页面中的一个callback函数。看下面一个列子:

    在www.aaa.com页面中:

      <script>
        function jsonp( json ){
          document.write( json.name );  //输出周星驰
      }
      <script>
    
      <script src="http://www.bbb.com/getinfo.php"></script>

    在www.bbb.com页面中:

      jsonp({ "name":"周星驰","age":45 });

    也就是在www.aaa.com页面中声明,在www.bbb.com页面中调用。但是JSONP只支持 “GET” 请求,但不支持 “POST” 请求。

    三、处理跨域的方法2 -- XHR2(推荐方法)

    “XHR2” 全称 “XMLHttpRequest Level2” 是HTML5提供的方法,对跨域访问提供了很好的支持,并且还有一些新的功能。

    * IE10一下的版本都不支持

    * 只需要在服务器端头部加上下面两句代码:

      header( "Access-Control-Allow-Origin:*" );

      header( "Access-Control-Allow-Methods:POST,GET" );

    关于 “XHR2” 的更多信息大家可以查看官方文档,在这里就不详细叙述了,总之这是这个很好用的方法。

  • 相关阅读:
    使用 libevent 和 libev 提高网络应用性能
    An existing connection was forcibly closed by the remote host
    各种浏览器的兼容css
    vs输出窗口,显示build的时间
    sass
    网站设置404错误页
    List of content management systems
    css footer not displaying at the bottom of the page
    强制刷新css
    sp_executesql invalid object name
  • 原文地址:https://www.cnblogs.com/jingubang/p/4608218.html
Copyright © 2011-2022 走看看