zoukankan      html  css  js  c++  java
  • Ajax跨越问题原因分析与解决思路

    【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

    1.什么是AJAX跨域问题

    简单来说,就是前端调用后端服务接口时
    如果服务接口不是同一个域,就会产生跨域问题

    2.AJAX跨域场景

    前后端分离、服务化的开发模式
    前后端开发独立,前端需要大量调用后端接口的场景
    只要后端接口不是同一个域,就会产生跨域问题
    跨域问题很普遍,解决跨域问题也很重要

    3.AJAX跨域原因

    浏览器限制:浏览器安全校验限制
    跨域(协议、域名、端口任何一个不一样都会认为是跨域)
    XHR(XMLHttpRequest)请求

    4.AJAX跨域问题解决思路

    浏览器:浏览器取下跨域校验,实际价值不大
    XHR:不使用XHR,使用JSONP,有很多弊端,无法满足现在的开发要求
    跨域:被调用方修改支持跨域调用(指定参数);调用方修改隐藏跨域(基于代理)

    5.JSONP解决跨域访问

    1.服务端JSONP格式数据

    如客户想访问 : http://www.runoob.com/try/ajax/jsonp.php?jsonp=callbackFunction

    假设客户期望返回JSON数据:[“customername1”,”customername2”]。

    真正返回到客户端的数据显示为: callbackFunction([“customername1”,”customername2”])。

    服务端文件jsonp.php代码为:

    jsonp.php 文件代码

    <?php
    header('Content-type: application/json');
    //获取回调函数名
    $jsoncallback = htmlspecialchars($_REQUEST ['jsoncallback']);
    //json数据
    $json_data = '["customername1","customername2"]';
    //输出jsonp格式的数据
    echo $jsoncallback . "(" . $json_data . ")";
    ?>
    
    2.客户端

    【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>JSONP 实例</title>
        <script src="http://cdn.static.runoob.com/libs/jquery/1.8.3/jquery.js"></script>    
    </head>
    <body>
    <div id="divCustomers"></div>
    <script>
    $.getJSON("http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=?", function(data) {
    
        var html = '<ul>';
        for(var i = 0; i < data.length; i++)
        {
            html += '<li>' + data[i] + '</li>';
        }
        html += '</ul>';
    
        $('#divCustomers').html(html); 
    });
    </script>
    </body>
    </html><br /><br />
    

    6.SpringMVC@CrossOrigin注解解决Ajax跨域请求

    https://www.cnblogs.com/mmzs/p/9167743.html

    版权声明

    【本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究。若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!】

  • 相关阅读:
    Java阶段测试题一
    HttpClient配置及运用(一)
    字符串数组及链表的应用:例题
    Java多线程
    String普通方法测试;可变参数
    Java连接mysql数据库
    JS练习
    foreach遍历、包装类、Object类
    Java多态总结
    类的关联,不同类属性的调用
  • 原文地址:https://www.cnblogs.com/onblog/p/13036367.html
Copyright © 2011-2022 走看看