问题描述
我使用 Spring Security Oauth2 身份验证作为客户端和资源服务器。 当我加载静态页面时,Oauth2 身份验证成功执行,并且从同一个浏览器会话中我可以访问 REST 点 (http://localhost:8080/)
但是,当我尝试通过 angular 加载相同的资源时,该资源是通过 Spring Boot 初始静态页面中的链接加载的,然后我可以看到 JSESSIONID Cookie 被删除,并且请求在服务器上被 401 拒绝。
我已启用
访问控制允许凭据:true
访问控制允许来源:http://localhost:4200
通过遵循 Spring Security DSL
protected void configure(HttpSecurity http) throws Exception {
http
.cors().configurationSource(request -> {
var cors = new CorsConfiguration();
cors.setAllowedOrigins(List.of("http://localhost:4200","http://localhost:8080"));
cors.setAllowedMethods(List.of("GET","POST","PUT","DELETE","OPTIONS"));
cors.setAllowedHeaders(List.of("Origin","Access-Control-Allow-Origin"));
cors.setAllowCredentials(true);
return cors;
})
我怀疑浏览器出于安全原因丢弃了 JSESSIONID,但控制台上没有错误消息。我还禁用了 HttpOnly ,但它没有帮助,但我不认为它应该有帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)