AngularJS跨域和session失效问题

Spring Boot+AngularJS中因为跨域导致Session丢失 如果还在为跨域问题烦恼,请查看博主的 解决angular+spring boot的跨域问题 那篇文章。 博主在项目开发过程中,遇到了由于跨域而导致的Session丢失问题,非常的恶心,但是经过在网上查阅各种资料,发现解决方法十分简单。 在我们每一次的数据请求中,浏览器都会向后台发送一个JSession,后台会根据这个值自动查找Id为JSession的那个session对象。但是当跨域时,J 阅读详情

跨域问题:
response.setHeader(“Access-Control-Allow-Origin”, “*”);
response.setHeader(“Access-Control-Allow-Methods”, “POST, GET, OPTIONS, DELETE”);
response.setHeader(“Access-Control-Allow-Headers”, “x-requested-with”);
在服务器端加上以上代码就可以了,主要是第一行允许其它域名的访问。

session失效问题:
在我们每一次的数据请求中,浏览器都会向后台发送一个JSession,后台会根据这个值自动查找Id为JSession的那个session对象。但是当跨域时,JSession的值每次都会改变,后台就会以为是新的一个会话打开,于是又去创建了一个新的Session对象,而原来的Session对象就找不到了。
当我们登录成功后保存一个token到session中去,下一个请求来的时候又会重建一个session,原来的session就取不到了,于是还是未登录状态。解决这个问题只要在跨域问题的代码上加上这句就可以了:
response.setHeader(“Access-Control-Allow-Credentials”,“true”); //是否支持cookie跨域
配置了allow-credentials之后,如果allow-origin设为*,跨域时会报错说因为允许credentials,origin不能设为通配*,那么就设置为当前domain。
response.setHeader(“Access-Control-Allow-Origin”, request.getHeader(“Origin”));

ok,后台开启Credentials后,前端也要配合开启,angular里app.config的时候加上这句就行了:
$httpProvider.defaults.withCredentials = true;

后台代码可以放在一个自定义filter里:

public class DefaultFilter implements Filter {
	private String encoding;
	
	public void init(FilterConfig config) throws ServletException {
		this.encoding = config.getInitParameter("encoding");
	}
	
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
	    HttpServletResponse response = (HttpServletResponse) res;
	        
		req.setCharacterEncoding(encoding);
		response.setContentType("text/html;charset=" + encoding);
		response.setHeader("Pragma","No-cache"); 
		response.setHeader("Cache-Control","no-cache"); 
		response.setDateHeader("Expires", 0);
		response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
		response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
		response.setHeader("Access-Control-Max-Age", "3600");
		response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
		response.setHeader("Access-Control-Allow-Credentials","true"); //是否支持cookie跨域
		chain.doFilter(req, res);
	}

	public void destroy() {}
}

在web.xml配上这个filter即可:

  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>com.xxx.xxx.filter.DefaultFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
前后端分离架构:原理、实践与优化策略 前后端分离是现代Web开发的核心架构模式,通过RESTful API实现前后端解耦。其技术原理基于HTTP协议和标准化接口规范,利用React/Vue等框架构建动态前端,配合Spring Boot等后端服务。这种架构显著提升了开发效率,支持技术栈自由选型,适用于中大型Web应用开发。实践中需关注接口契约管理、JWT认证、跨域解决方案等关键技术点,并通过Webpack优化、接口聚合等手段提升性能。随着微前端和Serverless技术的发展,前后端分离架构正在向更灵活的BFF模式和边缘计算演进。 阅读详情

相关推荐

判断 JavaScript 中的 Session 是否为空

根据你的具体应用场景和所使用的框架或库,以上代码可能需要适当调整。如果你使用的是特定的 JavaScript 框架或库,可能会有更方便的方法来判断 Session 是否为空。变量未定义,表示 Session 为空,代码将输出 “Session 为空”。为真,则表示 Session 不为空,代码将输出 “Session 不为空”。变量的判断方式可能会有所不同,具体取决于应用程序的实现方式和使用的库或框架。需要注意的是,上述代码仅在浏览器环境中有效,因为在浏览器中,在其他环境中,比如 Node.js,

CyberLynxX的博客 353

angular中的 登录检查 和 过期Session清理

angular利用ui-router进行登录检查 SAP都会有这个问题,session过期或者页面被刷新的情况下应该进入登录页. 监听ui-router的satte事件可以实现当state切换的时候检查登录情况 监听state变化处理页面刷新 //添加事件监听 $rootScope.$on('$stateChangeStart', function(event, toState, ...

weixin_34025051的博客 1623

Angular-SessionManagement

Angular 会话管理 安装 ###Bower 安装 SessionManagement 模块的最简单方法是将 bower 包包含到您的解决方案中 bower install symanto-angular-sessionmanagement --save 之后,您只需要将模块和所需的模块添加到您的 HTML 文件中 < script src =" bower_components/angular-local-storage/dist/angular-local-storage.min.js " > </ script > < script src =" bower_components/symanto-angular-sessionmanagement/SessionManagement.js " > </ script > 配置 您需要配置 SessionManagement 模

Angularjs 跨域cookie

一般情况我们在使用WebApi之类的技术时,都会遇到跨域的问题,这个只需要在服务端做一下处理即可。如果这些GET或POST请求不需要传递Cookie数据的话,就没什么问题了,但如果需要,那么会发现 虽然已经处理了跨域请求的问题,但后台始终无法获取到Cookie。 跨域传输Cookie是需要后台和前台同时做相关处理才能解决的。 就好比一个握手会话,前台先表示,我的跨域请求是带有Cookie的...

yihaoxue的博客 330

angular-session:AngularJS 中会话管理的基本类

角会话 AngularJS 中会话管理的基本类 需要

Golang中使用Qt库(therecipe/qt)+QtDesigner + Goland (一) 环境搭建

搭建的目的只是刚好看到有这么一个模块, 还有给使用Go的人需要用到调试界面的时候用一下,真正开发界面并不建议用,没必要, 还有缺点就是在windows平台下编译偏慢, 还有其他一些UI纯Go开发的UI -

听我一言的博客 1万+

关于angular2中,使用session处理

在angular中,使用session处理 源码如下: import { Injectable } from '@angular/core'; import { AES, enc } from 'crypto-js'; import { has, isNull, isUndefined, isNaN, each } from 'lodash'; @Injectable() export...

anweizhe4511的博客 1669

AI时代,程序员何去何从?别慌,看完这篇你就明白了

AI时代程序员的发展方向 摘要:随着AI代码助手的普及,程序员行业面临变革。本文通过实际案例展示AI写代码的能力与局限:AI能生成基础功能代码(如RESTful API、数据处理脚本),但缺乏业务理解、系统设计和复杂逻辑处理能力。程序员的核心价值在于需求分析、架构设计、性能优化等高层能力。未来程序员应: 掌握AI工具提升效率 专注于创新和架构设计 培养业务理解能力 持续学习新技术 AI不会取代程序员,但会淘汰不会使用AI的程序员。建议开发者拥抱AI工具,将其作为助手而非威胁,聚焦高价值工作。

yunque_xianguang的博客 907

angularJS-sessionStorage的运用举例,读取cookie中的值

如图所示,此页面有若干个tab切换栏,如何在我跳转到其他页面后,返回该页面时,依旧保存我的tab栏切换后的痕迹。 此时需要运用到session //用户点击操作记录缓存起来 var sessionStorage = window.sessionStorage; //默认是显示第一个tab栏状态 var sessionStorageStateFlag = 0; if (sessionSt

吃瓜群众的博客 5908

【牛股启动线】副图指标使用技术说明,图文案例分享,通达信炒股指标

如上图,在紫色线在黑色虚线上时,在出现紫色柱线时,通常会出现强势拉升的行情​。柱线加长加上紫色线上扬,进场跟随做多抓强势行情,紫色柱线和紫色线同时做多持续则可以继续持股。如上图,副图指标【牛股启动线】,指标信号包括紫色线走势信号和紫色柱线信号,以及底部的四条虚线技术信号​,还有一条绿色的参考线,一条黑色的虚线两天分档线。如上图,参考买点,紫色柱线开始出现时进场买点,在上图标记的位置对应的就是进场买点​。紫色柱线加长+紫色线上扬,多头共振持股,行情继续拉升阶段,持股待涨或顺势​进场做多。

weixin_69760830的博客 1906

杰理的蓝牙芯片的key是什么?以及该如何添加key?杰理key文件原理

很多的工程师,在开发杰理蓝牙芯片的第一步就会有一个很深的疑惑,关于key的 1、什么是key文件? 2、Key文件是如何产生的? 3、为什么需要他key文件? 4、如何添加key文件? 5、以及实际开发中的一些报错该如何处理?

qyvhome的博客 4094

session过期即跨域理解

session过期即跨域理解   session过期,过滤器判断跳转,但是如果是ajax的请求,由于他的回调方式返回,所以要在页面加入js另行处理, 对于一般的mvc请求直接跳转即可。   另:只有ajax存在夸域名的请求,其他的httpClient,mvc请求不存在,利用httpClient可以处理ajax的跨域请求(即用其做一个中间代理)(或者datatype:Jsonp即可实现跨域

yuhui666666的博客 592

探索Python融合地学:一文解决osgeo库安装失败问题

总结一下,要安装osgeo模块,关键在GDAL依赖库的安装,如果能够顺利安装GDAL依赖库,因其是osego的模块,因此osgeo的部分模块也能够得到自动安装,此时再运行代码,发现代码并不报错,能够正常运行了。第一步,我们要安装imagecodecs库,它支持多种常见的图像格式,当然也包含我们的目标tif格式,为方便后续的图像处理和安装osgeo模块,先安装此库。目前GDAL已经更新到了3.10版本,这里主要看你的Python版本是上面,小编用的是Python3.13,电脑是64位的,因此,我们选择。

Promising_GEO的博客 5460

angularjs 同步請求_AngularJS 应用请求设置同步问题~

你这个问题看似简单,但实际上有点模糊:“run 只运行一次”这个先觉条件到底有什么影响呢?看了半天我才明白你真正的问题在于你要知道用户的登录状态是否还有效,因为 SPA 应用不需要刷新页面,所以你的 run 只有运行一次的机会,因而如果用户不刷新浏览器且使用了很长时间(可能超过了 session 的有效期)那么你无法判断用户的登录还是否有效了。我说的没错吧?实际上你这个问题根源不在前端,而在后端的...

weixin_42521186的博客 399

运放+三极管恒流源电路设计实战:从原理到仿真一步到位(附Multisim文件)

本文详细解析了运放与三极管构建恒流源电路的核心原理,重点阐述了负反馈机制如何实现精准的电流控制。通过Multisim仿真实战,从电路搭建、参数计算到负载调整率与动态响应分析,一步步指导设计过程,并提供常见故障的调试技巧与PCB设计要点,帮助工程师从理论平稳过渡到可靠实践。

7z8x2c4v6b9的博客 708

Cursor自动生成测试用例

或者把你已有的规则直接复制粘贴到这个文档内(这里我用的是Markdown格式和CSV格式的测试用例生成规则,可以同时生成Markdown和CSV格式的测试用例)。在AI对话框这里,我们可以看到Cursor会逐步来帮我们生成测试用例,先分析识别需求文档,然后生成测试用例,最后会进行质量检查,确保生成的用例符合规范。生成的Markdown格式,可直接导入Xmind,生成思维导图,对应到具体的功能模块看具体的测试点,逻辑会更直观一些。(1)选中规则文档和需求文档:@你的测试用例规则文档@你的需求文档。

十二测试录 2431

shiro修改没有登录或者session失效,根据ajax返回json

当使用shiro框架,进行权限控制时,没有登录或者session失效,进行ajax请求时,不会跳转会登录页面,仅仅不返回正确结果。 因此,需要解决对ajax请求进行特殊处理。         1、重新FormAuthenticationFilter类onAccessDenied方法。让其根据不同的请假方式,返回不同的结果。 import org.apache.shiro.web.filter

football98的专栏 3265

核心组件大换血:Backbone与Neck魔改篇:YOLO26魔改Neck:引入BiFPN(双向特征金字塔),多尺度融合能力飙升

本文深入解析了YOLO26目标检测模型中Neck部分的优化策略,重点探讨了BiFPN(双向特征金字塔网络)的原理与实现。文章首先指出YOLO26原生FPN+PAN结构在多尺度特征融合上的局限性,特别是在小目标检测和边缘部署场景中的性能瓶颈。随后系统梳理了Neck网络的演进历程,从FPN、PANet到BiFPN和ASFF,详细对比了各架构的特点。核心部分展示了如何将BiFPN引入YOLO26,包括可学习权重融合、双向跨尺度连接等关键技术实现,并提供了PyTorch代码示例。本文为需要提升小目标检测性能或优化边

ZDQ58818的博客 243

angularjs20170329

1.jsp的四大作用域:         (1)page:当前页面,也就是跳转到别的页面就失效了。         (2)request 一次会话,简单的理解就是一次请求范围内有效         (3)session 浏览器进程,只要当前页面没有被关闭(没有被程序强制清除),不管怎么跳转都是有效的         (4)application  服务器,只要服务器没有重启(没有被程序强制

wanghongkuan的博客 217

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

angular-google-analytics性能优化与最佳实践:10个提升数据准确性的关键配置

如果你的 AngularJS 应用正在使用 **angular-google-analytics** 做数据统计,却总觉得 PV、事件、转化数据“差那么一点意思”,那很可能是配置没有做到位。angular-google-analytics 是 AngularJS 生态中最成熟的 Google Analytics 集成方案,支持自动页面跟踪、事件跟踪、电商数据、跨域统计等功能,但它的强大之处恰恰也藏

gitblog_01056的博客 258

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

AngularJS Ajax请求与Spring MVC登录超时解决方案

解决方案:对Angular Ajax的每次请求进行拦截,在请求头增加X-Requested-With标识,后台进行Fiter过滤时,根据X-Requested-With值来判断是否为Ajax请求,如果Session失效且为Ajax请求,则response返回错误编码。Angular拦截的responseError方法中判断是否为Session失效的错误编码,是在js代码中处理Session失效的逻辑

品味生活 3719

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

几种session存储方式比较

原文地址:几种session存储方式比较(转载)作者:jimy 集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。 1. 客户端cookie加密 这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。 问题:se

IT_superman的专栏 1万+

session失效重新登陆返回当前访问的页面

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33922672的博客 349

如何用angular-google-analytics实现自动页面追踪:SPA路由统计与ignoreFirstPageLoad实战

angular-google-analytics 是一个专为 AngularJS 应用打造的 Google Analytics 追踪库,它最强大的能力就是**自动页面追踪**:只要简单配置,就能在 SPA 单页应用的路由切换时自动上报页面浏览量。本文将带你一步步掌握它的 **SPA 路由统计**原理、标准配置方法,并深入实战 `ignoreFirstPageLoad` 这个解决"首屏重复统计"问题

gitblog_00559的博客 741

session过期,ajax请求处理

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33696822的博客 208
上一篇: AngularJS之手机端input图片上传(续)
下一篇: 前后端对请求参数排序
leebin_20
博客等级 码龄12年 17粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值