什么是跨域

两个url,协议或host或port不同,就是跨域。也就是说你的应用访问了该应用不该访问的域名或端口。

为什么会发生跨域问题

  • 1、浏览器限制,而不是服务端限制,可以查看Network,请求能够正确响应,response返回的值也是正确的
  • 2、请求地址的域名或端口和当前访问域名或端口不一样
  • 3、发送的是XHR(XMLHttpRequest)请求,可以使用 a 标签(模拟xhr请求)和 img 标签(模拟json请求)做对比(控制台只报了一个跨域异常)

如何解决跨域问题

  1. 浏览器端:CROS
  2. CORS 是跨域资源分享(Cross-Origin Resource Sharing)的缩写。
  3. CORS新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源

CORS请求分两种:简单请求和预检请求。这样分类的原因是因为,有些请求会对服务器产生副作用。浏览器需要通过OPTIONS方法预检,查看自己是否可以跨域。

  1. 服务器端:反向代理

https://zhuanlan.zhihu.com/p/66484450