1.什么是同源策略
同源策略:
浏览器处于安全方面的考虑,只允许与本域下的接口交互,不同源的客户端脚本在没有明确授权的情况下,不能读取对方的资源。
同协议:(http、file、shh、https、tel、ftp...)以上协议必须相同;
同域名:第一个 // 到第二个 / 之间的部分必须相同;
同端口:一般为80,具体看设置。
以上三条都相同则为同源
举例:
a.b.com,a.b.com/a.html 同源,域相同。
b.com, a.b.com 不同源,域不同,前者的域更”窄“。
a.b.com:8080, a.b.com/3000 不同源,端口不同。
http://a.b.com, https://a.b.com 不同源,协议不同。
2.什么是跨域?跨域有几种实现形式
跨域顾名思义就是突破同源策略的限制,去不同的域下访问数据。 主要有如下几种实现形式:
- jsonp
- CORS:跨域资源共享(Cross-Origin Resource Sharing)
- 降域
- postMessage()
3.JSONP 的原理是什么
- 首先,web服务器调用js文件不受是否跨域的影响(而且,带有src属性都可以跨域,如:img iframe script)
- 所以,JSONP就是依据这个特性,与web服务器调用脚本的方式一样,来引入生成动态的js文件,也就是引入在src里面输入你要的后端文件。
- 并且,JSONP的一个要点就是需要向后台传入一个callback参数,然后服务器返回的数据时callback函数会将数据包裹。
4.CORS是什么
CORS(cross origin resource sharing)跨资源共享。
原理:跨域的产生是因为浏览器出于安全方面的考虑,只允许与本域下的接口交互。所以如果我们能让后台跨域文件只识别某些web服务器的话,那么就可以进行对接。
方法在后端的返回头部设置header=('Access-Control-Allow-Origin',指定网址)
5.根据视频里的讲解演示三种以上跨域的解决方式
hosts 文件配置
127.0.0.1 www.clark.com
127.0.0.1 www.a.clark.com
127.0.0.1 www.b.clark.com
代码地址
效果均实现