进阶十三 跨域

1. 什么是同源策略

浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的客户端脚本在没有明确授权的情况下,不能读写对方的资源。

本域指的是:

  • 同协议:如都是http,https,file,ssh,mailto,tel
  • 同域名(在//后到第一个/之间):
    如都是http://jirengu.com/a 和http://jirengu.com/b
  • 同端口:如都是80端口
    如:http://jirengu.com/a/b.js 和 http://jirengu.com/index.php (同源)

*不同源的例子: *
http://jirengu.com/main.js 和 https://jirengu.com/a.php (协议不同)
http://jirengu.com/main.js 和 http://bbs.jirengu.com/a.php (域名不同,域名必须完全相同才可以)
http://jiengu.com/main.js 和 http://jirengu.com:8080/a.php (端口不同,第一个是80)

2. 什么是跨域?跨域有几种实现形式

跨域:
允许不同域的接口进行交互

跨域的几种实现形式:

  1. JSONP
  2. CORS
  3. 降域
  4. postMessage

3. JSONP 的原理是什么

web服务器调用js文件不受是否跨域的影响(而且,带有src属性都可以跨域,如:img iframe script)
JSONP就是依据这个特性,与web服务器调用脚本的方式一样,来引入生成动态的js文件,也就是引入在src里面输入你要的后端文件。
JSONP需要向后台传入一个callback参数,然后服务器返回的数据时callback函数会将数据包裹。

4. CORS是什么

前端用 XMLHttpRequest 跨域访问时,浏览器会在请求头中添加:origin
后端会添加一个响应头:Access-Control-Allow-Origin
浏览器判断该相应头中Access-Control-Allow-Origin的值是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。

5. 根据视频里的讲解演示三种以上跨域的解决方式

代码

你可能感兴趣的:(进阶十三 跨域)