7-5 前后分离(同源策略、修改host、跨域)
2021/5/7 18:29:35
本文主要是介绍7-5 前后分离(同源策略、修改host、跨域),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
跨域
1.跨域关键知识
- 同源策略
浏览器故意设计一个功能限制 - CORS
突破浏览器限制的一个方法 - JSONP
IE时代的妥协
2.同源策略
2.1 同源定义
- 源
window.origin
或location.origin
可以得到当前源
源=协议+域名+端口号
- 如果两个url的
协议
域名
端口号
完全一致,那么这两个url就是同源 - 举例
1.https://qq.com 和 https://www.baidu.com 不同源
2.https://baidu.com 和 https://www.baidu.com 不同源
3.只有完全一致才算同源
2.2 同源策略定义
- 浏览器规定
1.如果JS运行在源A里,那么就只能获取源A的数据
2.不能获取源B的数据,即不允许跨域 - 举例
1.假设frank.com/index.html 引用了 cdn.com/1.js
2.那么就说 [ 1.js 运行在源 fank.com里 ]
3.注意:这跟cdn.com没有关系,虽然 1.js 从它那里下载
4.所以 1.js 就只能获取 frank.com 的数据
5.不能获取 1.fank.com 或者 qq.com的数据 - 这就是浏览器的功能
浏览器故意这样设计的
2.3 浏览器这样做的目的
- 为了保护用户隐私
- 例如用户已经登陆QQ空间,AJAX请求/friend.json可获取用户好友列表
- 当有个钓鱼网站,你不小心点开这个网页登陆,那这个网页也请求你的好友列表
- 如果没有同源策略,那么你的好友列表就被黑客偷走了
- 因此:只要URL有一丁点不一样,都不能访问数据
2.4 同源策略
- 不同源的页面之间,不准互相访问数据
3.案例(创建两个网站来演示一下)
3.1 步骤
- 创建目录
qq-com 里面有一个 server.js,用来模拟QQ空间
lzy-com 里面有一个 server.js,用来模拟钓鱼网站 - qq-com
/index.html 是首页
/qq.js 是脚本文件
/friends.json 是模拟好友数据
端口监听为:8888,访问 http://127.0.0.1:8888 - lzy-com
/index.html 是首页
/lzy.js 是脚本文件
端口监听为:9999,访问 http://127.0.0.1:9999 - 使用qq.js去访问friends.json成功
使用 lzy.js 去访问friends.json 失败
3.2 host
- 除了端口号,想让域名也不一样
- 修改host即可
- window——记事本——右键:以管理员身份运行——文件——打开——C盘——windows——System32——drivers——etc——文件类型:所有文件——host——打开
不要删除默认内容
直接回车在后面加上
127.0.0.1 lzy.com 127.0.0.1 qq.com
- 意思是:
如果我访问:lzy.com,请直接请求 127.0.0.1
如果我访问:qq.com,请直接请求 127.0.0.1
IP在前,域名在后,保存 - 打开终端——ping qq.com
3.2.1 设置本地域名映射
- 通过以上步骤让
qq.com 映射到 127.0.0.1,直接访问:http://qq.com:8888/index.html
lzy.com 映射到 127.0.0.1,直接访问:http://lzy.com:9999/index.html
3.3 跨域AJAX
- 正常使用AJAX
在 qq.com:8888 里运行的JS可以访问 /friends.json
- 黑客偷数据
在 lzy.com:9999 里运行JS不能访问
浏览器需要 CORS
- 提问
1.请求发送成功了没有?
答:成功了,因为qq.com后台有log
2.黑客拿到响应了没有?
答:没有,因为浏览器不给数据给它
3.4其他疑问
- 为什么 a.qq.com 访问 qq.com 也算跨域?
答:因为历史上出现过不同公司共用域名 - 为什么不同端口也算跨域?
答:因为以前服务器很贵,出现过不同公司共用一个服务器 - 为什么两个网站IP一样也算跨域?
答:原因同上,IP可以共用 - 为什么可以跨域使用 CSS、JS 和图片等?
答:同源策略限制的是数据访问,我们引用CSS、JS和图片的时候,其实不知道其内容,只是在引用文件,不能读取内容。
这篇关于7-5 前后分离(同源策略、修改host、跨域)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10百万架构师第十三课:源码分析:Spring 源码分析:Spring核心IOC容器及依赖注入原理|JavaGuide
- 2025-01-10便捷好用的电商API工具合集
- 2025-01-09必试!帮 J 人团队解决物流错发漏发的软件神器!
- 2025-01-09不容小觑!助力 J 人物流客服安抚情绪的软件!
- 2025-01-09为什么医疗团队协作离不开智能文档工具?
- 2025-01-09惊叹:J 人团队用啥软件让物流服务快又准?
- 2025-01-09如何利用数据分析工具优化项目资源分配?4种工具推荐
- 2025-01-09多学科协作难?这款文档工具可以帮你省心省力
- 2025-01-09团队中的技术项目经理TPM:工作内容与资源优化策略
- 2025-01-09JIT生产管理法:优化流程,提升竞争力的秘诀