1,什么是跨?
a.跨域是指浏览器不能访问其他浏览器的脚本,它是由浏览器的同源(同一个域)策略造成的是浏览器对JavaScript实施的安全限制。
跨域形成:浏览器是从一个域名的网页去请求另一个域名的资源时出现的(域名,端口,协议)任意一个不同,都属于跨域。
b.非同源限制
1,无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB
2,无法接触非同源网页的 DOM
3,无法向非同源地址发送 AJAX 请求
2,如何解决跨域?
a,CORS 是跨域资源分享(Cross-Origin Resource Sharing)的缩写。
response.setHeader("Access-Control-Allow-Origin", "*");
“*”表示所有的域都可以接受CORS 需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能。
b.ajax跨域请求
由于在工作中需要使用AJAX请求其他域名下的资源,但是会出现拒绝访问的情况,这是因为基于安全的考虑,AJAX只能访问本地,同域的资源,而不能跨域访问可以让服务器去别的网站获取内容然后返回页面
c.JSONP
JSONP 是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,兼容性好(兼容低版本IE),缺点是只支持get请求,不支持post请求。
核心思想:网页通过添加一个<script>元素,向服务器请求 JSON 数据,服务器收到请求后,将数据放在一个指定名字的回调函数的参数位置传回来。