tomcat 解决跨域时 Access-Control-Allow-Origin 不能为*

2019-06-04 15:48:43 +08:00
 ClancyH
用 Tomcat9.0.16 的 CorsFilter 解决跨域的时候前端访问出现了 Access-Control-Allow-Origin 不能为*的问题,之前一个同样的项目没碰到这个,难道 CorsFilter 的 origin 不是动态的吗?
4163 次点击
所在节点    Java
10 条回复
KYLINZZ
2019-06-04 16:14:50 +08:00
带 cookie 的就不能为*,需要写上对应的 ip+端口号
ClancyH
2019-06-04 16:20:08 +08:00
@KYLINZZ 我知道,但是这个 tomcat 的 corsfilter 没有做吗?我之前用的时候没有做特殊的配置就正常的配一下 corsfilter 一样正常运行的同样是有 cookie 的
choice4
2019-06-04 16:23:12 +08:00
应该是 allow credentials 设置为了 true,这种可以将其调为 false,或从请求中获取到 ip 设置在 access-con....-origin 中
ClancyH
2019-06-04 16:25:36 +08:00
@choice4 allow credentials 不是默认 false 吗,我用的默认值,从请求获取 ip 在设置就是自己实现具体 filter,这个没问题,主要想知道为什么这次 tomcat 的 corsfilter 没有动态设置 origin,是使用姿势不对还是咋地
cccy0
2019-06-04 17:54:27 +08:00
allow credentials == true 和 Access-Control-Allow-Origin * 不能同时存在
ClancyH
2019-06-05 11:30:45 +08:00
@cccy0 allow credentials 是默认值 false
youngfish
2019-06-05 16:02:40 +08:00
CorsFilter 中的 origin 我们当时是通过配置文件实现的,需要添加域名,改配置文件就行了
wc951
2019-06-05 16:18:05 +08:00
spring 的 corsfilter 会在 allow credentials 为 true 且 allow
origin 为*的时候把 Access-Control-Allow-Origin 设置为 request origin
ClancyH
2019-06-05 16:44:45 +08:00
@wc951 其实实现不难,主要想知道为什么 tomcat 的 corsfilter 这次不生效了,看了 tomcat 的源码之后发现 tomcat 好像没有做相关处理,都不知道为什么之前没出问题了
wc951
2019-06-05 17:52:13 +08:00
@ClancyH cors 分为简单请求和预检请求,你之前没出问题的应该是简单请求

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

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

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

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

© 2021 V2EX