18910140161

Ajax跨域访问的三种方法

顺晟科技

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”的更多信息,可以查看官方文档,这里就不详细描述了。总之,这是一个非常有用的方法。

相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航