1.跨域的原因
JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。
2.跨域
1)允许
- 同一域名下
- 同一域名下不同文件夹
2)不允许 - 同一域名,不同端口
- 同一域名,不同协议
- 域名和域名对应IP
- 主域相同,子域不同
- 同一域名,不同二级域名
- 不同域名
3.跨域
跨域指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。
- 同源策略:同源是指域名、协议、端口相同,不同源的客户端脚本(JavaScript、ActionScript)在没有明确授权的情况下,不能读写对方的资源。
- 为什么跨域——为了让某些数据实现不同域名上的共享,以达到数据共用提高处理效率的目的,需要对部分数据进行跨域访问。
4.如何实现跨域
- JSONP
JSONP(JSON with padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。(不支持POST请求)
核心:通过script标签的src属性,进行域名的包装来完成跨域数据的访问。src来模拟数据的来源,通过和要访问的服务器的域名一致进行同源数据的访问,间接实现跨域数据访问。 - 代理(由后台来做)
例如:www.123.com/index.html需要调用www.456.com/server.php,可以写一个接口www.123.com/server.php,由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。 - PHP端修改header(XHR2方式)IE10以下版本不支持
在php接口脚本中加入以下两句即可:
header('Access-Control-Allow-Origin:*'); //允许所有来源访问
header('Access-Control-Allow-Method:POST,GET'); //允许访问的方式
5.promise
- 解决延期承诺
- 承诺两个结果 reslove 解决 reject 拒绝
- .then(解决回调函数,拒绝的回调函数)
- 1)做一些延期承诺的事情
setTimeout/网络相关ajax - 2)解决JS回调函数嵌套问题
- 3)能够让JS同步按一定顺序去执行JS代码(先获取地址,再获取天气,最后渲染到页面)
6.登录注册知识点
- 登录注册都是前端验证,后端实现功能
- 发送http请求的时候,会把本地的cookie上传到服务器
- 服务器有能力来设置本地cookie
- 登录状态有两种保持方式
1)浏览器关闭 登陆状态取消
2)勾选记住登陆状态 1个月 1周
3)浏览器不关闭 超过10分钟——遇到重要的操作,需要重新登录 -
后端怎么知道用户是不是登陆中(后端是怎么保持的)
1)当用户输入用户名,密码,发送后端
2)后端通过加密解密一系列手段和数据库对比是否登录成功
3)如果登陆成功
3.1后端会在服务器创建一个叫session对象来保存用户信息
3.2把session加密在设置一个cookie给浏览器(时间限制)
3.3用户向服务器请求特别的内容(需要登陆过才能获取)发送所有的cookie个后端
3.4当后端接收到cookie(解密后)在和服务器的session对比,如果一致判定用户还是登陆中,把需要的信息返给用户,如果不一致提示用户登录
好了,今天的分享就到这里了!
愿你三冬暖,愿你春不寒;愿你天黑有灯,下雨有伞。