今年五一放假5天,准备每天学习一个主题内容,输出一篇前端学习复盘文章,对于这样的复盘文章我一直想做,但是大多数情况都败下阵来,以为自己不擅长把一个概念讲清楚,于是怕做复盘,但是不擅长把一个东西讲清楚,其实是没有真正理解有关概念和相关知识,还因为练习不够,也因此复盘就更加重要。
前段时间进行了两次面试,被问到好多问题,工作中几乎都遇到过,而且我也确确实实的解决了,但是我不注意总结,愚熊掰玉米 ,掰一个丢一个,满地狼籍却食不果腹。面试的结果可想而知。还想在技术水平上磨练,所以一定要逼着自己开始做这样一件事。
今天是第一天,不幸的是已经过了十二点,其实11点我就困的不行倒在床上睡着了,妈妈叫我洗脚,,这样我又坐在电脑前,,加油!
跨域是什么现象?
前端访问不同部署位置的服务器资源,浏览器报错的现象,一般是如下的错误提示

跨域的原因
浏览器的安全策略:同源策略(SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。)
所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
同源策略是浏览器的行为
为了保护本地数据不被JavaScript代码获取回来的数据污染,因此拦截的是客户端发出的请求回来的数据接收,即请求发送了,服务器响应了,但是无法被浏览器接收。
实际中的现象是,服务器的确返回了数据,但是浏览器报错,数据不能正常显示。
同源策略限制以下几种行为:
1.) Cookie、LocalStorage 和 IndexDB 无法读取
2.) DOM 和 Js对象无法获得
3.) AJAX 请求不能发送
跨域解决方案
1、 通过jsonp跨域;
利用了 标签(<script>)加载资源 不受同源策略的限制
缺点:只能 get 方式,易受到 XSS攻击
2、 document.domain + iframe跨域
相同主域名下的不同子域名资源,设置 document.domain 为 相同的一级域名
缺点:同一一级域名;相同协议;相同端口
3、 location.hash + iframe
4、 window.name + iframe跨域
5、 postMessage跨域
解决两个页面直接的通信
6、 跨域资源共享(CORS)
后端跨域方案
服务端设置Access-Control-Allow-Origin即可,前端无须设置,若要带cookie请求:前后端都需要设置。
7、 nginx代理跨域
前端向发送请求,经过代理,请求需要的服务器资源
缺点:需要额外的代理服务器
8、 nodejs中间件代理跨域
参考
前端常见跨域解决方案(全)
[什么是跨域?如何实现(详解)](https://zhuanlan.zhihu.com/p/124919549
推荐学习
2小时快速掌握前端9种跨域解决方案
网友评论