同源策略和跨域

同源策略

什么是同源策略?

同源策略是指浏览器处于安全考虑的情况下,只允许本域下的借口进行交互。不同源的客户端在没有授权的情况下是不允许获取对方资源的。

本域指的是什么?
  • 同协议:例如相同的http或https
  • 同域名:例如https://baidu.com/aaa 和 https://baidu.com/bbb
  • 同端口:例如8080端口

跨域

跨域是指通过其他方法在其他域下的接口获取数据
一般来说跨域有三种方法

  1. JSONP
  2. CORS
  3. 降域
  4. postMessage

这里主要着重介绍一下CORS是如何实现跨域的。
CORS全称是跨域资源共享(Cross-Origin Resource Sharing),是一种 ajax 跨域请求资源的方式。CORS的原理是当使用XMLHttpRequest 发送请求时,浏览器发现该请求不符合同源策略,会给该请求加一个请求头:Origin,后台进行一系列处理,如果确定接受请求则在返回结果中加入一个响应头:Access-Control-Allow-Origin; 浏览器判断该相应头中是否包含 Origin 的值,如果有则浏览器会处理响应,我们就可以拿到响应数据,如果不包含浏览器直接驳回,这时我们无法拿到响应数据。
例如A网站想要通过ajax向B网站发送ajax请求获取B网站接口的数据,因为同源策略,未经B网站允许A网站无法获取接口的数据。但是A网站和B网站协商之后,同意获取端口数据,B网站的后端就会加上允许A网站访问,此时A网站在发送请求时就会加一个请求头,当B网站收到后会处理相应,返回数据。

在js 的代码中,需要额外加上一句代码设定请求头


code.png

你可能感兴趣的:(同源策略和跨域)