浅谈跨域请求数据

来源:互联网 发布:云端数据采集 编辑:程序博客网 时间:2024/06/06 02:19

1:跨域取数据:
方法:jsonp
原理:script标签的src属性不受浏览器同源策略的限制,可以跨站请求,将请求回来的数据当做js代码来执行(无论请求的文件是否是js文件都会把它当做js代码来执行)
同源策略:所谓的同源策略指的是浏览器出于安全的考虑 要求用户访问的文件必须满足三个条件:
1:主机地址相同
2: 协议相同
3: 端口号相同
假设有页面A 访问页面 B,那么A和B必须同时满足以上三个条件,浏览器才允页面之间的访问,这里尤其需要注意的是主机地址, 主机地址的表示方法有两种,域名 和 IP, 此处的主机地址相同,要求必须同时是同一个 IP 或者 同一个域名 否则 即使两个页面实际上是一个主机地址,但是一个是IP 表示的,一个是域名表示的,浏览器也视为跨域。无法访问。
例如:
localhost/20170321/demo.html
127.0.0.1/20170321/getData.php
两个文件实际上是同一个主机地址(本地服务器),但是浏览器会认为是跨域。

具体实现:前后端约定好一个回到函数的的名称 (例如callback)利用URL地址栏传参的方式 将callback 传到后台,后台通过调用 这个函数,同时将数据包裹在小括号中,实现将数据回传的目的。后端可以用 callback=_GET['callback'];方式接受到传入的函数的的名称。然后:

$callback('这里是要回传的数据‘); 一般是json格式的数据。

方式2:直接利用ajax的$.getJSON()方法获取。
$.getJSON( url [, data ] [, success(data, textStatus, jqXHR) ] )

url是必选参数,表示json数据的地址;
data是可选参数,用于请求数据时发送数据参数;
success是可参数,这是一个回调函数,用于处理请求到的数据。

获取json数据举例:
$.getJSON(url,function(data){
//此处可以将回传的数据做具体的处理
console.log(data);

涉及到跨域提交数据的,会在下一篇内容提到。