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.客户端
<!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>

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

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

最新文章

  1. 比较评测epoll,select,and poll 时间机制
  2. kernel/printk.c
  3. 安装Ubuntu 16.04后要做的事
  4. jquery中邮箱地址 URL网站地址正则验证实例代码
  5. Java基础知识强化之IO流笔记43:IO流练习之 复制文本文件的 5 种方式案例
  6. Android自动化测试之环境搭建
  7. C语言作业06--结构体&amp;文件
  8. 事件派发dispatchEvent
  9. WSGI 相关的东东(转载)
  10. Hive与HBase表联合使用Join的问题
  11. iOS蓝牙开发之iBeacon技术
  12. mysql_单表查询
  13. MySQL 索引长度和区分度
  14. Java创建文件和文件夹
  15. 最佳linux文件WINDOWS上传下载方法
  16. 3ds max学习笔记(三)--视点显示控制
  17. spring cloud 笔记
  18. LeetCode 32 Longest Valid Parentheses(最长合法的括号组合)
  19. python-day43--多表查询
  20. VMware Host Agent服务不能正常启动

热门文章

  1. wap2app(七)-- 长按保存图片
  2. 记一次zookeeper单机伪集群分布
  3. 消除Warning: Using a password on the command line interface can be insecure的提示
  4. Android 模块构建错误不能下载依赖包
  5. 转:敏捷开发之Scrum扫盲篇
  6. c/c++ 标准容器 vector的内存空间是如何自动增长的
  7. zookeeper-02 部署
  8. LeetCode算法题-Best Time to Buy and Sell Stock II
  9. 《Java大学教程》—第19章 改进用户界面
  10. 使用Docker在本地搭建Hadoop分布式集群