1.什么是跨域
当一个请求url的协议,域名,端口号三者之间任意一个与当前页面url不同即为跨域
浏览器解析页面时,当页面中有ajax请求时,则要求页面的URL地址,与Ajax请求的地址必须满足同源策略的规范.
同源策略:
- 请求协议 http:// https://
- 请求域名
- 请求的端口**
上述的三项必须相同. 满足同源策略.浏览器可以解析数据,否则不能正常解析.
2.跨域解决策略
旧的方式: JSONP(了解)
新的方式: CORS 方式
3.CORS介绍
**跨源资源共享 (CORS) (或通俗地译为跨域资源共享)**是一种基于HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它origin(域,协议和端口),这样浏览器可以访问加载这些资源。跨源资源共享还通过一种机制来检查服务器是否会允许要发送的真实请求,该机制通过浏览器发起一个到服务器托管的跨源资源的"预检"请求。在预检中,浏览器发送的头中标示有HTTP方法和真实请求中会用到的头。
核心: 服务器在响应头中标识可以访问用户的地址. CORS服务端跨域
(1)普通跨域请求:只需服务器端设置Access-Control-Allow-Origin
(2)带cookie跨域请求:前后端都要进行设置
【前端设置】根据xhr.withCradentials判断是否有cookie
xhr.withCradentials=true;
【服务器端设置】服务器端对于CORS的支持,主要是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,将可以允许ajax进行跨域的访问