dragonwong / blog

a blog based on github page
dragonwong.github.io/blog/
9 stars 4 forks source link

跨域历险记 #9

Open dragonwong opened 6 years ago

dragonwong commented 6 years ago

解决跨域嘛,后端修改响应头中的 Access-Control-Allow-Origin 字段,添加跨域白名单域名。结果发现,报了 options 请求跨域问题。

options 请求是什么?

通常跨域请求可以分为三种:

  1. 简单请求(Simple requests)
  2. 预检请求预检请求(Preflighted requests)
  3. 重定向附带身份凭证的请求(Requests with credentials)

了解这三种请求请看:HTTP访问控制(CORS)- HTTP | MDN

总之,对于符合要求的请求使用 options 来进行预检没有毛病。关键是 options 也需要允许跨域。一般做法就是 ng 加上一堆 header 之后无脑返回 200。之后再来就可以发送简单请求了。当然简单的请求改加的 header 也是要加的(后端做)。