微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当跨源资源从 Spring Boot 通过 Angular 加载时,JSESSIONID 被丢弃在浏览器中

如何解决当跨源资源从 Spring Boot 通过 Angular 加载时,JSESSIONID 被丢弃在浏览器中

我使用 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 举报,一经查实,本站将立刻删除。