同源策略及其产生的问题

同源策略

同源策略又称SOP,全称Same Origin Policy,是浏览器最基本的安全功能;从浏览器触发,如果一个网站可以被无限访问,不受任何限制;浏览器的压力将会剧增,并且乱序出现混乱;也无法阻止恶意请求。所以基于保护浏览器采用了同源策略。
同源策略指的是:当前页面只能访问同源的接口资源
所谓同源,即端口号,域名,协议均相同;只有当前页面和接口的端口,域名及协议全部相同才能访问。

跨域

但当一个项目很大时,不可能所有的内容都放在一个网页或一个服务器,所以需要跨过同源策略,这就是跨域。

解决方案

后端解决:设置响应头

response.setHeader('Access-Control-Allow-Origin','*') //设置所有的请求地址都允许跨域
response.setHeader('Access-Control-Allow-Origin-Method','*') //设置所有请求方法都允许跨域

前端解决: JSONP

JSONP 指的是 JSON with Padding;是一种无需考虑跨域问题就可以传输json数据的方法;不使用XMLHttpRequest对象;使用script标签代替;它的兼容性很好,可以在老的浏览器运行;不需要XMLHttpRequest或ActiveX的支持;并且在请求完毕后通过调用回调函数的方式返回结果,callback函数由服务器调用;
但JSONP也有缺点,它只支持get请求,不支持其他请求方式;所以jsonp多用于查询

除了script标签不受跨域限制外,iframe以及link标签也不受跨域限制。

代理服务器

代理服务器允许跨域请求。客户端会将请求发送给代理服务器,代理服务器接收后将转发给目标服务器,目标服务器处理请求并向代理服务器做出回应,代理服务器接收到响应后再将响应发送给客户端。

posted @ 2022-09-18 15:56  啊呀阿鱼呀  阅读(66)  评论(0编辑  收藏  举报