【面试】一文讲通跨域

104 阅读1分钟

0. 前言

面试文章的规矩想必也知道了,不赘述。

1. 定义

  • 同源:两个URL的protocolporthost都相同即为同源。

受到同源约束的交互有:

  1. 跨域写操作(可)
  2. 跨域资源嵌入(可)
  3. 跨域读操作(不可)

2. CORS原理

由一系列传输的HTTP头组成,可以发送任何类型的请求。

分为简单请求非简单请求

简单请求三大法:

  • HEAD
  • GET
  • POST

流程:浏览器直接发CORS请求,在头信息中加一个Origin字段即可。

非简单请求是除上面三大法以外其他的方法。请求两次:一次是Request Method: OPTIONS,另一次是请求所需内容。

3. JSONP的原理及优缺点

原理:利用<script>没有跨域限制的漏洞来达成与非同源交互的目的。<img><link>标签也可以用于跨域。

缺点:

  1. 只支持GET请求;
  2. 没有错误处理;
  3. 不支持async:false同步;
  4. 容易被攻击。

背诵版:只get而不能改错,不现代且易被攻。

References

  1. 浏览器的同源策略
  2. CORS | MDN
  3. CORS原理解析
  4. 贺师俊--JSONP
  5. html可用于跨域的三个标签