vue 前端 springboot 后端分离跨域求解

2020-10-27 14:51:27 +08:00
 madworks
上一周整合 springsecurity 写个项目,前端用 vue,302 跳转登录遇到跨域问题,一直无法解决,前后端都使劲浑身节数不得姐,不管用 @crossorigin,corsconfigaddorigin*、192168,前端设置 axiosCredentials,webpackproxy 都不行,求问怎么解决,还有问下大家是习惯 vue 前端打包后当成静态和后端放在一起运行,还是分开运行
3884 次点击
所在节点    Java
41 条回复
jiangnan01
2020-10-27 14:59:17 +08:00
接口用 postman 能通吗?如果能通,前端在开发环境配 proxy 应该也是可以的,不需要后端做任何事
至于到底是分开运行还是放到一起,看项目怎么要求了,能分开更好
madworks
2020-10-27 15:01:26 +08:00
@jiangnan01 没有 postman,就是本地能用,用同事机器访问我 ip 项目不能
jiangnan01
2020-10-27 15:04:31 +08:00
@madworks 你自己运行起来是前后端分开的还是放在一起的?同事访问的方式呢?
madworks
2020-10-27 15:08:06 +08:00
@jiangnan01 我自己访问是分开的,同事是访问我项目前端。而且我们另一个 vue 开发的项目发现 webpack 代理那里不能用 ip,必须写域名
OldActorsSmile
2020-10-27 15:09:17 +08:00
服务端 header 里配置允许跨域就好了,你看高德的 api,跨域调用它都没问题
OldActorsSmile
2020-10-27 15:10:15 +08:00
JAVA 我不熟,php 是这样写的:
header('Access-Control-Allow-Origin:*'); // *代表允许任何网址请求
hafuhafu
2020-10-27 15:12:17 +08:00
盲猜可能是复杂请求没处理 OPTIONS 吧,跨域是浏览器的行为,如果接口本身是正常的,postman 不会管跨不跨域,肯定能通的。
ljpCN
2020-10-27 15:12:40 +08:00
建议贴上完整的前端域名和 http 请求信息
madworks
2020-10-27 15:13:58 +08:00
@OldActorsSmile 这个我写过,不行好像
anonydmer
2020-10-27 15:14:14 +08:00
搞不定就搞个 nginx 代理下,去掉跨域啦
madworks
2020-10-27 15:15:25 +08:00
@ljpCN 这个 springsecurity 代码里看到过,应该他内部已经做处理了
jiangnan01
2020-10-27 15:22:31 +08:00
@madworks 你自己的前端项目配 proxy 了吗?
madworks
2020-10-27 15:23:01 +08:00
@jiangnan01 配了的
OldActorsSmile
2020-10-27 15:26:22 +08:00
@madworks

跨域的原理是浏览器为了安全而阻止。如果浏览器发现服务器 header 告诉它允许就可以。高德的 api 跨域就是这个原理。
有图有真相,你试试: https://shoujihao.zhishifufei.cn/

THESDZ
2020-10-27 15:54:29 +08:00
1.本地调试,使用 proxyTable
2.生产部署使用 nginx 反向代理到服务器 ip:port

以上为本人解决方式,仅供参考
NULL2020
2020-10-27 16:03:49 +08:00
```

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("*");
}


```
KuroNekoFan
2020-10-27 16:05:28 +08:00
没啥必要就置同域吧
madworks
2020-10-27 16:21:41 +08:00
@NULL2020 这样写过,没用
madworks
2020-10-27 16:22:25 +08:00
@THESDZ 加了一层,这样做的目的是什么
THESDZ
2020-10-27 16:28:23 +08:00
@madworks 对于用户来说,前后端的资源请求在同一域内

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/719043

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX