转发404,跨域 实现越过登录请求一个以SSM+AngularJS实现网站 20C

由于一些原因不能截图,口述:

首先 我有两个项目,Test1,Test2,在Test1中有一个链接 :

 <a ="http://localhost:8088/Test2/view?email=123@163.com&token=XXXX">

发送请求到 Test2时会直接使用email和 token校验用户,也就是登录操作,
之后会吧用户 存到session 最后会用session来生成另一个token,这很重要!!!这些校验操作都在一个controller中实现,cocontroller 里会直接 使用 :

return "forward:/#/app/sastDetail/"+project.getAppId()+"/Overview";

形式的一个 转发 来将请求转发到 一个报告页面,页面是使用的 angular 的路由实现的,只需要 登录然后 直接通过 类似于:

http://localhost:8088/Test2/#/app/sastDetail/227bd5e3-003f-4ab8-9fa7-0ce6980ecf37/Overview"
就可以访问!!
所以在Test2中有登录拦截器,会根据登录时生成的token是否为空来拦截。

问题:
直接运行Test2,登录,然后通过http://localhost:8088/Test2/#/app/sastDetail/227bd5e3-003f-4ab8-9fa7-0ce6980ecf37/Overview"能够访问
运行Test1,Test2,通过Test1 中的 a标签 来访问,出现404路径错误:

HTTP Status 404 - Test2/#/app/sastDetail/227bd5e3-003f-4ab8-9fa7-0ce6980ecf37/Overview
,注意 在controller是使用的forward 转发到 Overview 页面的!

然后 我尝试 使用redirect 重定向,地址同上,但session会丢失!

2个回答

session一定会丢失的,建议考虑Cookie,或者其他保存方案

xcgh
xcgh #问题吧
大约一年之前 回复
weixin_38652136
邪恶八进制 我知道Test1 的 session 一定会丢失,但我的 登录存的session和转发请求都在 Test2 里,这是不会丢失的,问题是404
大约一年之前 回复

return "forward:/hello" => 转发到能够匹配 /hello 的 controller 上,controller都不在一个项目上,自然会404。
一般现实项目直接前面加个网关,比如nginx,做反向代理,重写session的作用域就好了。

oHuaiHaiZi1
oHuaiHaiZi1 回复oHuaiHaiZi1: 你装个抓包工具不如fiddle,就可以理解这种前后端分离的区别了
大约一年之前 回复
oHuaiHaiZi1
oHuaiHaiZi1 回复weixin_38652136: /#/app/sastDetail/这个是到Angular的路由,forward这是去匹配spring的controller
大约一年之前 回复
weixin_38652136
邪恶八进制 回复weixin_38652136: hello在Test2里边
大约一年之前 回复
weixin_38652136
邪恶八进制 额,从Test1发起请求到Test2,然后在Test2里边转发到hello也算不在同一项目吗?
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!