深度贴:前端网络基础及进阶(3)
浏览器的同源是什么?
异源请求一定会产生跨域问题吗?
跨域问题本质是因为浏览器同源策略产生的开发问题。在客户端发送请求后,客户端的响应传入浏览器时浏览器校验不通过,就产生了跨域问题。
浏览器同源及跨域问题
同源策略是一套浏览器「安全机制」,当一个源的文档和脚本,与另一个源的资源进行通信时,同源策略就会对这个通信做出不同程度的限制。简单来说,同源策略对同源资源放行,对异源资源限制。
因此限制造成的开发问题,称之为跨域(异源)问题。
一、.源与同源策略
源和同源:源(origin)由协议(schema)、域名domian、端口号port组成。只要协议、域名、端口号都相同的就是同源。
同源请求:同源指的是页面源和目标源两者之间。页面源和目标源不一致的时候就是跨域请求;一致即为同源请求。
浏览器同源策略
- 对标签发出的跨域请求轻微限制
- 对AJAX发出的跨域请求严厉限制
二.跨域问题的解决方案
1.CORS(Cross-Origin Resource Sharing)解决方案
CORS是浏览器校验跨域请求的规则。只要服务器明确表示允许,则校验通过,不会产生跨域问题;若服务器明确拒绝或没有表示,则校验不通过,产生跨域问题。
CORS方案将请求分为简单请求和预检请求:
- 简单请求
- 预检请求,除了简单请求以外的请求。
CORS请求流程
2.JSONP解决方案
将请求封装成标签。
3.代理服务器解决方案
在网页源和目前源之间添加一个中间服务器。