跨域问题产生的原因
同源策略:端口相同、域名相同、协议相同
- 同源策略是浏览器所做的,目的是为了保证用户信息的安全,防止恶意的网站窃取数据。
- 同源策略限制范围:
- Cookie、LocalStorage、IndexDB无法读取;
- DOM 无法获取;
- AJAX 请求不能发送
解决方法
CORS(cross-origin resource sharing)跨域资源请求:浏览器发送一个跨域的 ajax 请求的时候,请求头会加上 origin 字段,但是它不知道这个资源服务端是否允许跨域请求。浏览器会发送到服务端,如果服务器返回的头中没有‘Access-Control-Allow-Origin’:‘对应网址或*’的话,那么浏览器会把请求内容给忽略掉,并且会在控制台报错。
CORS 允许简单的请求方法:GET、POST、HEAD
CORS 允许的 Content-Type : text/plain、multipart/form-data、 application/x-www-form-ulencoded
其他类型的请求方法和 Content-Type 需要通过预请求验证 OPTIONS 后才能发送
JSONP 跨域
原理
浏览器虽然有同源限制,但是像 script 标签、link 标签、img 标签、 iframe 标签,这种标签上通过src 地址来加载一些内容的时候浏览器是允许进行跨域请求的。
各种跨域方式的优缺点
JSONP 的优点是兼容性好,可用于解决主流浏览器跨域数据访问的问题;缺点是仅支持 get 方法,只能用来获取资源,并且无法进行错误处理。
CORS 优点是支持所有类型的请求方法,功能完善,并且可以进行错误处理,用 onerror 监听错误, CORS 更加安全;缺点兼容性不够好,IE10 以下不支持 CORS。
下一篇
对语义化标签的理解
对语义化标签的理解
版权声明:《 使用过的跨域方式,各自的优缺点 》为胡光喆原创文章,转载请注明出处!
最后编辑:2021-9-16 12:09:21