• Ajax跨域访问


    Ajax跨域访问

    ​ Ajax跨域,简单来说就是一个网站调用另一个网站提供的数据。但是因为存在浏览器的“同源策略”,并不能直接实现。同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。跨域实现有以下方式:

    1.jsonp

    ​ jsonp(填充式JSON或参数式JSON)是应用JSON的一种新方法,是被包含在函数调用中的JSON。可在$.ajax方法中设置dataType:jsonp

    ​ 前台HTML页面:

    <body>
        <script type="text/javascript">
            $.ajax({
            url:'http://www.a67.com/jsonp.php',
            type:'get',//jsonp方式必须使用get方式
            dataType:'jsonp',//返回值类型必须设置为jsonp
            jsonp:'fn',//jsonp跨域的传参,是一个随机数
            success:function(msg){
                alert(msg.id+" "+msg.name);
            }
        })
        </script>
    </body>

    ​ 后台PHP程序:

    <?php
    // 接收跨域的随机数
    $fn = $_GET['fn'];
    // 定义返回值
    $arr = array('id'=>101,'name'=>'zs');
    // 输出返回值
    $str = json_encode($arr);
    echo $fn."($str)";

    2.cors

    ​ 使用cors策略,Cross-Origin Resource Sharing 跨域资源共享

    ​ 前台HTML页面:


    <body>
    <script type="text/javascript">
    $.ajax({
    url:'http://www.a67.com/cors.php',
    type:'post',//类型使用get post均可
    dataType:'text',//返回值类型就是一般的text
    success:function(msg){
    alert(msg);
    }
    })
    </script>
    </body>

    ​ 后台PHP程序:

    <?php
    // 设置http://www.alishow.com网站下的所有程序都能访问当前页面
    header('Access-Control-Allow-Origin:http://www.alishow.com');
    
    // header('Access-Control-Allow-Origin:http://www.alishow.com,http://www.ajax.com.cn');
    
    // 设置所有网站都可以访问当前页面
    // header('Access-Control-Allow-Origin:*');
    
    // 设置POST和GET访问方式均可
    header('Access-Control-Allow-Methods:POST,GET');
    
    echo '123';
  • 相关阅读:
    java 前端-BOM
    java web -tomcat
    java基础-递归
    java基础-正则表达式
    Hibernate从入门到精通(六)一对一双向关联映射
    Hibernate从入门到精通(五)一对一单向关联映射
    Hibernate从入门到精通(四)基本映射
    Hibernate从入门到精通(三)Hibernate配置文件
    Hibernate从入门到精通(二)Hibernate实例演示
    洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn
  • 原文地址:https://www.cnblogs.com/Jianxq12/p/7639399.html
Copyright © 2020-2023  润新知