深色模式
跨域
跨域是浏览器限制一个域向另一个域发送 Ajax 请求。跨域存在于浏览器中。跨域的核心是浏览器的同源策略。
同源策略
决定一个源的因素有
- 域名,比如
a.liuzunkun.com
和b.liuzunkun.com
跨域 - 端口,比如
http://liuzunkun.com:80
和http://liuzunkun.com:8080
跨域 - 协议,
https
和http
跨域,比如https://liuzunkun.com
和http://liuzunkun.com
跨域
同源策略限制以下几种行为:
- Cookie、LocalStorage、SessionStorage 和 IndexDB 无法读取
- DOM 和 JS 对象无法获得
- AJAX 请求不能发送
跨域常用解决方案
结论: 跨域要么解决,要么绕过
- JSONP 方案
- 接口正向代理, 比如 nodejs 中的
http-proxy-middleware
- nginx 方向代理,
proxy_pass
- CORS 方案
跨域注意事项
- 跨域发生在浏览器端,如果通过其他方式请求,比如 postman 则接口能正常使用
- 跨域被浏览器阻止了,但是服务端可能已经返回了正确的结果
- 跨域会阻止 JS 发起的 Ajax 请求,但是一些静态资源标签自带跨域功能,比如
script, link, video, img, audio
等,除非设置跨域规则。