同源策略:浏览器为了保证用户信息操作安全,所做的一些限制,如果协议,主机,端口号有任意一个不同浏览器将开启同源策略,同源策略使得客户端虽然接受到了服务端传来的响应,但是浏览器限制了它读取和修改不同源的dom,访问不同源的cookie,IndexDB 和 LocalStorage,限制XMLHttpRequest 请求
解决策略:利用JSONP,cros,反向代理
JSONP:首先在前端 代码中写入一个用于执行服务端返回来的回调函数,然后再script标签中的src写入要访问的地址并且携带回调函数的一系列参数,服务端那边根据请求的url和回调函数,生成一个携带信息的js代码片段返回给前端,然后前端再通过回调函数去处理收到的数据,z这个流程就相当于洗钱,script是漏洞,回调函数就洗钱机构,服务端那边给的不能直接使用,但是可以通过script标签这个漏洞,把想要发送的信息发给回调函数,回调函数洗白了,客户端又可以用了
缺点:只能发get请求,参数会暴露在页面不安全,服务端那边要设置支持jsonp,返回的数据无法进行错误处理
Cros:分为简单请求和非简单请求
简单请求:请求方法只能是get,post,head一种,然后请求头三个取值范围是限定的
简单请求的过程:首先客户端会在发送的请求头部添加origin说明那个源,然后服务器端收到会去在回应的时候添加access-control-allow-origin字段,如果客户端请求的源不在允许的范围,那么响应将会被浏览器拦截,同时还可以设置一些其他的比如允许cookie的放送什么
非简单请求:
不同于简单请求的是多了一个发送预检请求,请求包括两个方面,请求方法和cors需请求头字段,然后服务器端响应预检响应,如果预检不满足响应的几个字段,那么cors请求将不会被发送,如果满足此时将重复简单请求的步骤
反向代理:利用服务器与服务器不存在同源策略的特点