【坑】前后端分离开发中 跨域问题以及前台不带cookie的问题
文章目录
前言
场景一:
前台哒哒哒的点击页面,发送请求,但是后台服务器总是没有回应,后台接口虽打了断点,但是根本进不到断点处;
前端:我请求发过去了,数据格式也是对的,你接口文档就是那样写的,我按照接口文档要求写的,你服务器怎么了,你接口写的对吗,巴拉巴拉。。。。
后台:我接口文档写的很对欸,我这边postman测试可以的,我测试通过了才写的文档欸,你那边什么情况啊,你发送的请求对吗,巴拉巴拉。。。
场景二:
前台登陆的时候,验证码一直校验不通过;
前端:我输入的验证码,就是图片中的验证码,为什么你后台一直校验不通过啊,怎么肥四啊,你后台接口写的对吗,逻辑判断的对吗,巴拉巴拉。。。。
后台:肯定对啊,我这边我自己用postman已经测试通过了,你那边怎么搞的,我后台都获取不到你的
session欸,巴拉巴拉。。。
那一天是我实习生涯的第28天,第一次接触前后端分离开发,我感觉好像,慢慢领悟到了前后端分离开发的真谛:或许大概可能也许是 前后端甩锅开发;
跨域问题
场景一,就是典型的跨域问题,在前后端分离开发的时候,由于前后台代码不在一台服务器上了,前端页面服务器想要访问后台接口的时候,由于浏览器的 同源策略,会拒绝掉这些访问,导致后台根本收不到这些请求;
后台需要配置下;
博主使用的是SSM框架,因此在 springMvc.xml 中配置:
<!-- 配置支持跨域访问 -->
<mvc:cors>
<mvc:mapping path="/**"/>
</mvc:cors>
最简单粗暴的,来自任何源的请求都接收;
cookie问题
跨域访问的时候,浏览器默认是不带cookie去的,这样导致每次后台都产生根据请求产生新的session,验证码值保存在各自的session里面,当然也就永远的检验不通过了!
前台在发送 Ajax 请求的时候,告诉浏览器允许跨域带 cookie ,写上如下;
xhrFields:{withCredentials: true}
拦截器导致的跨域问题
上面的问题都解决以后,最后给系统加上拦截器。跨域问题又来了。
我们需要在拦截器里面放行 options 方法,此方法是浏览器发出来的探测方法,探测目标主机是否允许跨域,结果在探测的时候,被拦截器拦截了,送出去的侦察兵音信全无,浏览器就不会向目标主机发送请求了,发出一个 cros 跨域错误 ;
// 放行探测跨域的 options 方法
if ("OPTIONS".toLowerCase().equals(httpServletRequest.getMethod().toLowerCase())){
System.out.println(httpServletRequest.getMethod().toLowerCase());
return true ;
}
后记
多年以后,或许我说的最多的话就是:
- 我这边能用
- 在我这是好使的
- postman测试可以通过
- 你没清缓存吧
【坑】前后端分离开发中 跨域问题以及前台不带cookie的问题的更多相关文章
- 前后端分离开发,跨域时jsessionid每次请求都变化的问题解决方法
本解决方法的使用前提是,前端开发使用的是vue,后端使用java(SpringMVC) 在前后端分离开发过程中,可能会出现因跨域而导致每次请求的jsessionid不一致的情况 解决方法: 前端:要在 ...
- springboot 前后端分离开发解决跨域访问
最近新学习了Java EE开发框架springboot,我在使用springboot前后台分离开发的过程中遇到了跨域求问题.在网上寻找答案的过程中发现网上的解决方案大多比较零散,我在这里整理一个解决方 ...
- 如何解决 Django 前后端分离开发的跨域问题
一.同源策略 1.先来说说什么是源 • 源(origin)就是协议.域名和端口号. 以上url中的源就是:http://www.company.com:80 若地址里面的协议.域名和端口号均相同则属于 ...
- 前后端分离产生的跨域问题的解决方案之--jsonp、nginx代理、设置头信息等
前言 在前后端没有分离的时候,前端开发要么是写静态页面,数据渲染后端来做,要么就是前端的页面和后端的代码刚开始的时候就合并在一起,每次后端代码更新了之后,前端也要更新一下代码,然后重启一下服务,还是比 ...
- 前后端分离 vue+springboot 跨域 session+cookie失效问题
环境: 前端 vue ip地址:192.168.1.205 后端 springboot2.0 ip地址:192.168.1.217 主要开发后端. 问题: 首先登陆成功时将用户存在session ...
- 前后端分离crud(跨域问题)讲解
1 前后端分离 1.1 后端 ssm+maven 多模块 swagger 文档描述(代码拷贝过来,就可以生成了,https://www.cnblogs.com/wings-xh/p/11991511. ...
- 前后端分离djangorestframework——解决跨域请求
跨域 什么是跨域 比如一个链接:http://www.baidu.com(端口默认是80端口), 如果再来一个链接是这样:http://api.baidu.com,这个就算是跨域了(因为域名不同) 再 ...
- 解决vue+springboot前后端分离项目,前端跨域访问sessionID不一致导致的session为null问题
问题: 前端跨域访问后端接口, 在浏览器的安全策略下默认是不携带cookie的, 所以每次请求都开启了一次新的会话. 在后台打印sessionID我们会发现, 每次请求的sessionID都是不同的, ...
- WEB前后端分离开发中的验证与安全问题
登录验证以及安全问题: 1.请求接口全部用post方式,在后端判断请求方式是否为post 2.登录密码等敏感信息要加密后传输,如用RSA(支付宝里可下载公私钥生成工具),客户端公钥加密,传到服务器后再 ...
随机推荐
- Tkinter 之PanedWindow标签
一.参数说明 参数 作用 background(bg) 设置背景颜色 borderwidth(bd) 设置边框宽度 cursor 指定当鼠标在PanedWindow上飘过的时候的鼠标样式 handl ...
- 【CSP模拟赛】独立集(最长上升子序列&大力猜结论)
题目描述 有一天,一个名叫顺旺基的程序员从石头里诞生了.又有一天,他学会了冒泡排序和独 立集.在一个图里,独立集就是一个点集,满足任意两个点之间没有边.于是他就想把这两 个东西结合在一起.众所周知,独 ...
- sturts标签中
struts中的s标签中textfield和textarea中不需要加上value和中间值,通过name可以直接取到. textfield和textarea标签没有value属性,需要加上${ylqx ...
- Jmeter聚合报告理解
 Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值 Samples:表示这次测试中一共发出了多少个请求 ...
- Oracle中查询走索引的情况
1.对返回的行无任何限定条件,即没有where子句 2.未对数据表与任何索引主列相对应的行限定条件例如:在City-State-Zip列创建了三列复合索引,那么仅对State列限定条件不能使用这个索引 ...
- 为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控。
快速阅读 为什么要监控sql语句,以及如何监控,都有哪几种方式可以监控. 我们知道sql server 中有个工具叫sql profile ,可以实时监控sql server中 执行的sql 语句,以 ...
- windows下CEF3的关闭流程《转》
原文地址:https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_Close.md ============================ ...
- Unity3D地下守护神ARPG开发三部曲 视频教程+素材+源码
通过大型教学项目“MMOARPG地下守护神”项目的学习,掌握常用设计模式.架构设计.各种重要算法与设计模式在项目中的灵活运用,学后达到中高级游戏研发人员水平,做主程必备. 适用人群 学习Unit ...
- Unity2017 熊猫跑酷
1.背景 随着移动互联网的快速发展,现在的人们对手机的依赖程度越来越大,以至于为于手机用户量身定做的手机游戏大行其道.正是基于这样的背景,城市跑酷--这个好玩的游戏诞生了 2.机遇 手机触屏时代的到来 ...
- keepalived vip removed with dhcp renewal【原创】
最近发现公司云平台服务器的vip有丢失的现象,查看keepalived日志 Jun :: lb1 dhclient: DHCPREQUEST of (xid=0x6deab016) Jun :: lb ...