顺晟科技
2021-08-28 09:39:43
204
首先,什么是跨域
我们先来回顾一下域名地址的构成:
http://www .Google : 8080/script/jquery . js
http://(协议号)
Www(子域名称)
谷歌(主要域名)
8080(端口号)
Script/jquery.js(请求的地址)
*当协议、子域名称、主域名和端口号中的任何一个不同时,它被认为是不同的“域”。
*不同的域互相请求资源,称为“跨域”。
例如,http://www.abc.com/index.html问http://www.def.com/sever.php
二、跨域1-agent的处理方法(这个方法比较“笨”,就不详细介绍了)
例如,北京(www.beijing.com/sever.php)和上海(www.shanghai.com/sever.php)有一个服务器,北京(www.beijing.com/sever.php)的后端直接访问上海的服务,然后将获得的响应值返回给前端。也就是说,北京的服务在后台充当代理,前端只需要访问北京的服务器,相当于访问上海的服务器。这种代理属于后台技术,就不描述了。
三、跨域2的处理方法——JSONP
假设您在http://www.aaa.com/index.php,的页面上向http://www.bbb.com/getinfo.php提交了一个GET请求,然后我们在www.aaa.com的页面上添加了以下代码:
var eleScript=document . createelement(' script ');//创建脚本元素
elescript . type=' text/JavaScript ';//声明类型,
elescript . src=' http://www . BBB.com/getinfo . PHP ';//添加src属性以引入跨域访问的url
document . getelementsbytagname(' HEAD ')[0]。appendChild(eleScript);//将新创建的脚本元素添加到页面中
当GET请求从http://www.bbb.com/getinfo.php,返回时,它可以返回一个JavaScript代码,该代码将自动执行,并可用于调用http://www.aaa.com/index.php页面中的回调函数。请看下面一栏:
在www.aaa.com页面上:
脚本
函数jsonp(JSON){ 0
document . write(JSON . name);//输出周星驰
}
脚本
脚本src=' http://www . BBB.com/getinfo . PHP '/脚本
在www.bbb.com页面上:
Jsonp({ '姓名' : '周星驰','年龄' :45 });
也就是说,它在www.aaa.com页面中声明,在www.bbb.com页面中调用。但是JSONP只支持“GET”请求,不支持“POST”请求。
三、处理跨域2-XHR 2的方法(推荐方法)
“XHR2”全称“XMLHttpRequest Level2”,是HTML5提供的一种方法,为跨域访问提供了很好的支持,并且有一些新的功能。
*不支持IE10版本
*只需在服务器的标题中添加以下两句话:
标头('访问控制-允许-原始: * ');
标题('访问控制-允许-方法:发布,获取');
关于“XHR2”的更多信息,可以查看官方文档,这里就不详细描述了。总之,这是一个非常有用的方法。
28
1990-12
02
2022-09
09
2022-04
29
2021-08
29
2021-08
29
2021-08