跨域处理
发起的请求与当前页面所在服务, 协议,ip,端口三者只要有一个不同,违反了浏览器的同源策略,造成跨域问题。
需要在服务器端配置响应头,告诉浏览器服务端允许这个客户端的请求:
响应头需要配置如下信息:
允许的域:http://127.0.0.1:8848
允许的请求头
允许的请求方法:GET/POST/PUT/DELETE/OPTIONS预检.
是否允许请求携带cookie信息
可以暴露给客户端的响应头
跨域产生的问题:
问题1:请求不能正常响应。因为浏览器的同源保护(springmvc.xml中配置全局跨域)
解决方法:配置springMVC全局跨域设置< mvc:cors >
<mvc:cors>
<mvc:mapping path="/**" allowed-origins="http://127.0.0.1:8848" allowed-methods="*" allowed-headers="*" allow-credentials="true"/>
</mvc:cors>
问题2:httpSession保存用户会话信息:每次请求服务器都会创建新的HttpSession对象,无法做到多次请求之间共享session中数据。
解决方法:前端axios请求配置withCredentials=true,表示请求时携带cookie
服务端跨越配置中允许接收客户端cookie,allow-credentials=“true”
如果使用chrome发现配置后仍然不行,开发中暂时先chrome://flags/,把samesite禁用了。