CORS 设置笔记
1. setAllowedOrigins vs setAllowedOriginPatterns
setAllowedOrigins
- 用于明确指定允许的 URL 列表。
- 不能与通配符 (
*) 一起使用。 - 例:
只允许来自setAllowedOrigins(Arrays.asList("https://example.com", "https://another-example.com"));https://example.com和https://another-example.com的请求。
setAllowedOriginPatterns
- 允许使用正则表达式模式来指定允许的来源。
- 适用于需要模式匹配,例如子域的情况。
- 例:
允许来自setAllowedOriginPatterns(Arrays.asList("https://*.example.com"));https://example.com的任何子域的请求,如https://sub.example.com或https://another-sub.example.com。
注意:如果同时设置了 setAllowedOrigins 和 setAllowedOriginPatterns,setAllowedOriginPatterns 的设置会覆盖 setAllowedOrigins 的设置。
2. Spring 的 SockJS 设置问题
在 Spring 5.3+ 版本中,使用 setAllowedOrigins("*") 与 withSockJS() 结合时会导致错误。
报错:
IllegalArgumentException: When SockJS is enabled, use the setAllowedOriginPatterns method instead.
原因:
SockJS 提供了一个模拟 WebSocket 的后备选项,可能涉及到跨域请求。Spring 强制使用 setAllowedOriginPatterns 来更明确地设置允许的源,以增强安全性。
解决:
使用 SockJS 时,应该使用 setAllowedOriginPatterns("*") 而不是 setAllowedOrigins("*")。
希望这份笔记对你有所帮助!
本文介绍了CORS设置中的setAllowedOrigins和setAllowedOriginPatterns的区别,以及在Spring5.3+中使用SockJS时遇到的安全问题。Spring要求使用setAllowedOriginPatterns明确设置允许的源以提升安全性,解决方法是针对SockJS启用时使用setAllowedOriginPatterns("*").
2338

被折叠的 条评论
为什么被折叠?



