浏览器中的同源策略

同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。

同源的含义

同源策略:
同源指的是我们访问站点的:协议、域名、端口号必须一至,才叫同源。
浏览器默认同源之间的站点是可以相互访问资源和操作DOM的,而不同源之间想要互相访问资源或者操作DOM,那就需要加一些安全策略的限制,俗称同源策略
同源策略主要限制了三个方面:
DOM层面:不同源站点之间不能相互访问和操作DOM
数据层面:不能获取不同源站点的Cookie、LocalStorage、indexDB等数据
网络层面:不能通过XMLHttpRequest向不同源站点发送请求
当然同源策略限制也不是绝对隔离不同源的站点,比如link、img、script标签都没有跨域限制。

如何解决:

前端js:jsonp

后端:cross插件,token/cookie

服务端:nginx 配置反向代理。

token/cookie解决跨域请求:

你有两个站点,a.com,b.com,都设置了允许跨域访问
你现在要在a.com请求b.com的接口,
a.com请求的时候带的是a.com的cookie
b.com返回的时候cookie也是设置到b.com的。
正常情况你在a.com是获取不到b.com的cookie。
如果非要获取,可以设置同源策略,嵌套b.com脚本然后postmessage的方式获取,但是这种方式很极端只适用少部分情况。
正常的实现还是,前端请求api,api返回token,前端你可以存到cookie或者localStorage,请求api的时候手动获取token,追加到请求头中(可以是cookie,也可以是其他header头)即可。

你可能感兴趣的:(安全)