Ajax跨越问题原因分析与解决思路
2024-09-25 16:29:09
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
最新文章
- 比较评测epoll,select,and poll 时间机制
- kernel/printk.c
- 安装Ubuntu 16.04后要做的事
- jquery中邮箱地址 URL网站地址正则验证实例代码
- Java基础知识强化之IO流笔记43:IO流练习之 复制文本文件的 5 种方式案例
- Android自动化测试之环境搭建
- C语言作业06--结构体&;文件
- 事件派发dispatchEvent
- WSGI 相关的东东(转载)
- Hive与HBase表联合使用Join的问题
- iOS蓝牙开发之iBeacon技术
- mysql_单表查询
- MySQL 索引长度和区分度
- Java创建文件和文件夹
- 最佳linux文件WINDOWS上传下载方法
- 3ds max学习笔记(三)--视点显示控制
- spring cloud 笔记
- LeetCode 32 Longest Valid Parentheses(最长合法的括号组合)
- python-day43--多表查询
- VMware Host Agent服务不能正常启动
热门文章
- wap2app(七)-- 长按保存图片
- 记一次zookeeper单机伪集群分布
- 消除Warning: Using a password on the command line interface can be insecure的提示
- Android 模块构建错误不能下载依赖包
- 转:敏捷开发之Scrum扫盲篇
- c/c++ 标准容器 vector的内存空间是如何自动增长的
- zookeeper-02 部署
- LeetCode算法题-Best Time to Buy and Sell Stock II
- 《Java大学教程》—第19章 改进用户界面
- 使用Docker在本地搭建Hadoop分布式集群