跨域
跨域是指一个资源请求与其不在同一个域(源)的资源,不在同一个域(源)是指两个域的协议、域名或端口不同。
同源策略
出于安全考虑,浏览器制定了同源策略, 限制了某些跨域请求。同源策略是跨域问题产生的根源。但是,同源策略并没有限制所有的跨域请求,比如浏览器不限制加载嵌在<script>
标签中跨域的js文件。
跨域资源共享机制(CORS)
跨域资源共享(CORS)是浏览器提供的一种跨域协商机制,让前后端协商是否可以发出跨域请求。
CORS添加了若干Access-controll-request-xxx
的头,给客户端声明自己的源、要使用的头部、用使用的请求方法;添加了若干Access-Controll-Allow-xxx
的头,给服务端声明自己支持跨域的源、头部和方法。
CORS将请求分为简单请求和复杂请求,对于复杂跨域请求,发送真正请求之前要通过预检机制和后端协商。
简单请求
一个简单请求要满足以下所有条件:
只能使用
GET
、HEAD
或