跨域

3.2 跨域测试

3.2.1同域测试

域名地址: http://manage.jt.com/test.html
Ajax地址: http://manage.jt.com/test.json
测试发现: 协议|域名|端口号都相同时 可以相互通信.

3.2.2跨域测试

域名地址: http://www.jt.com/test.html
Ajax地址: http://manage.jt.com/test.json
测试发现: 如果域名不相同时,无法实现远程的访问.

3.2.3同源策略说明

说明: 浏览器出于安全性的考虑要求发起Ajax时,必须满足同源策略的规定.
要求: 1.协议名称相同 http/https
2.域名相同
3.端口号相同
如果上述的3条违反任意的一条即违反了同源策略.称之为跨域访问. 反之为同域访问.
在这里插入图片描述
在这里插入图片描述

3.3 JSONP

3.3.1 JSONP介绍

JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的

3.3.2 JSONP跨域原理说明

1).利用javaScript中的src属性 实现跨域.

2).自定义回调函数
<script type="text/javascript"> /*JS是解释执行的语言 */ /*定义回调函数 */ function hello(data){ alert(data.name); } </script>

3).将返回值结果进行特殊的格式封装: callback(json)

在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试JSON跨域问题</title>	
	<script type="text/javascript">
		/*JS是解释执行的语言  */
		/*定义回调函数  */
		function hello(data){
			alert(data.name);
		}
	</script>
	<!--该json一直保存到浏览器中等待调用,但是没有函数名称无法调用  -->
	<script type="text/javascript" src="http://manage.jt.com/test.json"></script>
	<script type="text/javascript" src="http://manage.jt.com/js/jquery-easyui-1.4.1/jquery.min.js"></script>
</head>
<body>
	<h1>JS跨域问题</h1>
	
</script>
</body>
</html>

3.3.3 JSONP API学习

1).编辑页面,发起跨域请求
在这里插入图片描述

 CORS

3.4.1 CORS介绍

CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。
整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。
因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

3.4.2 关于CORS工作原理

说明:在服务器中添加响应头信息.告知客户端 程序可以正常执行.
在这里插入图片描述

3.4.3 CORS使用说明

1.客户端支持CORS
在这里插入图片描述
2.配置服务器端
在这里插入图片描述

posted @ 2021-02-04 09:50  Liang-shi  阅读(49)  评论(0编辑  收藏  举报