浏览器跨域
1. 核心概念
1.1 什么是跨域
你一定见过这个报错:
1 | Access to XMLHttpRequest at 'https://api.com/data' |
Postman 能调通,浏览器就不行——问题不在接口,而在浏览器的同源策略(Same-Origin Policy, SOP)。
跨域指的是:网页脚本试图访问与自身协议(scheme)、域名(host)、端口(port)任一不同的资源时,浏览器对这次访问施加的限制。
请求已经发出去了,服务端也已经处理并返回了响应。浏览器拦截的是响应——它不让 JS 读取返回的数据。
类比理解:你住在封闭小区,保安(浏览器)规定只有本小区(同源)的快递可以签收。外面的快递员(跨域请求)想送货进来,必须由物业(服务端)提前开好通行证(CORS 响应头),保安验证通过才放行。