同源策略(Same origin Polity)
浏览器出于安全考虑,只会于本域下的接口交互。不同源的客户端脚本,在没有明确授权的情况下,不能读写对方资源。
什么是本域?
- 同协议: 如果是http或者https
- 同域名: 如果是http://xxxx.com/a || http://xxxx.com/b
- 同端口: 如果是80端口
看看不同源:
- http://xxx.com/admin/index.js || https://xxx.com/index.php (协议不同)
- http://xxx.com/admin/index.js || http://zzz.com/admin/index.js (域名不同,域名要完全相同)
- http://xxx.com:80/admin/index.js || http://xxx.com:8080/admin/index.js(端口不同,第一个是80)
JSONP 解决 跨域
需要后端支持
用script标签去请求,请求的数据由后台,
CORS 跨域资源共享
跨来源资源共享(CORS)是一份浏览器技术的规范,提供了 Web 服务从不同网域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。用 CORS 可以让网页设计师用一般的 XMLHttpRequest,这种方式的错误处理比 JSONP要来的好。另一方面,JSONP 可以在不支持 CORS 的老旧浏览器上运作。现代的浏览器都支持 CORS。