聊一下,先后分离后带来的跨域访问和cookie问题

在谈先后分离前,咱们先看看什么是先后一体的.当咱们用javaweb开发网站时,最终咱们渲染的jsp或者springthymeleaf.咱们的页面实际上是WEB-INFO或者templates下.当用户请求咱们的xxx页面资源其实并非请求的真正的页面,而是通过咱们controller处理完,产生modelAndView后,在找到视图解析器,最终把数据放到视图中,而后response才把视图经过流传输给客户端.在这种开发环境中,咱们请求的页面实际是在web容器中的,天然是本域访问.html

若是咱们将html文件整个挪出去,而后经过ajax方式访问咱们的controller,此时controller和html并不在一个环境中,就产生了跨域访问.在产生跨域访问时,浏览器的请求顺序是 1向服务端发起一个options类型的请求,这个请求则是向服务端发出疑问,你容许我访问吗?这个疑问包含的条件有,客户端请求头,客户端地址,客户端请求方式,等等.若是服务端容许客户端的这些条件,则告诉客户端浏览器,你能够发出真正的请求了.这时浏览器才会发送真正的请求.java

 

那么接下来咱们来看服务端配置,也就是入栈规则了.ios

 

 这么配置算是万无一失,前提是,你的客户端不传递cookie.web

作javaweb开发的朋友们都知道,java中对于每个客户有一个session.而session是根据cookie中的JSESSION来甄别身份的.ajax

若是是先后一体的项目,则每一个请求都会默认带上cookie,但若是是先后分离则不会每次都携带cookie.这时咱们须要在客户端进行配置spring

我这里使用的是axios插件axios

 

 这时则会每次携带cookie,可是这并没结束.若是客户端要携带cookie,那服务端跨域

 

 必须明确指定放行的客户端域名.这其实也是一个保护措施,试想,若是服务端容许每个陌生的客户端访问,那么万一有坏蛋经过携带大量cookie来搞服务端,又当如何.浏览器

至此,先后分离所带来的跨域访问和cookie携带问题就搞定了.cookie

相关文章
相关标签/搜索