[Mis][HTTP] 何为跨域 - Gukie/learning GitHub Wiki
refer
何为跨域
- 广义的,是两个不同的域名之间的访问,就是跨域
- 狭义的,也是我们大家通常说的,只要不是同一个源过来的请求,就是跨域(即同源策略,Same Origin Policy,SOP)
所谓同源,就是 "协议+域名+端口",他们三个要一致才认为是同源,否则就不是; 即使两个域名指向同一个IP,也不能算是同源;
同源策略,是浏览器的一种安全策略,而非HTTP协议的一部分
非同源举例
URL 说明 是否允许通信
http://www.domain.com/a.js
http://www.domain.com/b.js 同一域名,不同文件或路径 允许
http://www.domain.com/lab/c.js
http://www.domain.com:8000/a.js
http://www.domain.com/b.js 同一域名,不同端口 不允许
http://www.domain.com/a.js
https://www.domain.com/b.js 同一域名,不同协议 不允许
http://www.domain.com/a.js
http://192.168.4.12/b.js 域名和域名对应相同ip 不允许
http://www.domain.com/a.js
http://x.domain.com/b.js 主域相同,子域不同 不允许
http://domain.com/c.js
http://www.domain1.com/a.js
http://www.domain2.com/b.js 不同域名 不允许
如何解决跨域问题
常用的,是使用CORS (Cross Origin Resource Sharing); 在服务端,设置Access-Control-Allow-Origin支持的域,前端无需做任何操作; 如果需要带上Cookie,则前后端都要进行设置