大家都知道,Ajax是一种发送http请求与后台进行异步通讯的技术。在使用Ajax带来的方便之余,大家还要知道,Ajax被一种策略所限制,它叫做同源策略。
ajax的同源策略:
ajax请求的页面或资源只能是同一个域下面的资源,不能是其他域的资源,这是在设计ajax时基于安全考虑。
1. 协议相同
2. 域名相同
3. 端口相同
在这种策略的限制下,Ajax只能在满足同源策略情况下发送请求。否则就会出现“跨域”问题。
跨域:
服务器A获取不到服务器B的数据,则为跨域现象
跨域现象的表现:
(1) Cookie、LocalStorage 和 IndexDB 无法读取。
(2) DOM 无法获得。
(3) AJAX 请求不能发送。
为了解决跨域,推荐大家一种简便的方法:Jsonp
Jsonp通过动态创建Script标签,使用jQuery的Jsonp请求
使用Jsonp方法:
$.ajax({
//向其他服务器发送Ajax请求,触发跨域
url:"http://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction",
type:"get",
dataType:"jsonp", //返回值类型为Jsonp
jsonp:"callback", //说明它有回调函数
jsonpCallback:"callbackFunction", //这个回调函数的名字叫什么,根据请求地址的内容写
success:function(data){
console.log(data) //成功获取到了目标地址的数据
}
})
这样就能通过Jsonp解决了跨域问题。
PS:新手文章,不出意外应该是有错误的,欢迎大家指出错误,笔芯。