当前位置: 首页 > 知识库问答 >
问题:

Spring安全会话:接收“Set-Cookie”标头但未在浏览器中设置

盖斌
2023-03-14

我在试Spring保安

Set-Cookie: SESSION=NGJlYTkzODQtNTQzMy00NGIxLWEzOWYtYTc2MGNlZWY1OTJm; Path=/; HttpOnly; SameSite=Lax

但是在我对服务器的下一个请求中,没有在请求中自动设置cookie。顺便说一句,我在开发人员工具中看不到cookie,所以我认为它没有保存。

我在当地为前线工作

以下是有关后端的一些信息:

>

  • 使用Spring MongoDb会话配置@EnableMongoHttpSession公共类会话配置{}

    • 经典Spring Security配置

    `@EnableWebSecurity公共类SecurityConfig扩展WebSecurity配置适配器{私有最终CustomAuthenticationProvider authProvider;

    public SecurityConfig(CustomAuthenticationProvider authProvider) {
        this.authProvider = authProvider;
    }
    
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.authenticationProvider(authProvider);
    }
    
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .cors().and()
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .httpBasic(); //todo csrf
    }
    
    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Collections.singletonList("http://localhost:4200")); // todo properties by environment
        configuration.setAllowedMethods(Arrays.asList("GET", "POST", "OPTIONS", "DELETE", "PUT", "PATCH"));
        configuration.setAllowedHeaders(Arrays.asList("X-Requested-With", "Origin", "Content-Type", "Accept", "Authorization"));
        configuration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
    

    }'

    会话很好地保存在mongodb中,只是id没有保存在浏览器中。有什么想法吗?

    编辑

    在httpClient参数中设置观察员:“响应”时,我看不到Set-Cookie标头:

    "cache-control: no-cache, no-store, max-age=0, obst-revalid-,content-type: apps/json, timetify: 0, pragma: no-cache"

    但在开发人员工具中,我有:

    HTTP/1.1 200变化:原点变化:访问控制请求方法变化:访问控制请求标头访问控制允许原点:http://localhost:4200访问控制允许凭据:true X-Content-Type-Options:nosniff X-XSS-Protection:1;模式=块缓存控制:无缓存,无存储,最大年龄=0,必须重新验证Pragma:无缓存过期:0 X-Frame-Options:拒绝设置Cookie:SESSION=YTEwOTNkNjAtZjI4MS00ZmM2LWExYmEtYzA5NzJhMjAyNTJh;路径=/;仅HTTPS;SameSite=Lax内容类型:应用程序/json传输编码:分块日期:2019年7月1日周一11:25:08 GMT

  • 共有2个答案

    韦晟睿
    2023-03-14

    在后端创建CORS筛选器添加此

    response.setHeader("Access-Control-Allow-Headers",
                    "Date, Content-Type, Accept, X-Requested-With, Authorization, From, X-Auth-Token, Request-Id");
    response.setHeader("Access-Control-Expose-Headers", "Set-Cookie");
    response.setHeader("Access-Control-Allow-Credentials", "true");
    
    扶绍辉
    2023-03-14

    问题是在角度方面!我添加了一个拦截器,添加了withCredentials参数,它可以正常工作。

    @Injectable()
    export class XhrInterceptor implements HttpInterceptor {
    
      intercept(req: HttpRequest<any>, next: HttpHandler) {
        const xhr = req.clone({
          withCredentials: true
        });
        return next.handle(xhr);
      }
    }
    
     类似资料:
    • 我正在尝试Spring Security&Session和一个棱角分明的前端。当尝试使用响应头登录时,我得到一个200代码: 但在我对服务器的下一个请求中,请求中没有自动设置cookie。顺便说一下,我在开发工具中看不到cookie,所以我认为它没有保存。 我在本地工作的前端和后端。 以下是有关后端的一些信息: > 使用Spring MongoDb会话 经典Spring Security配置 `@

    • 问题内容: 我正在使用Angularjs。当我设置标头时,在Chrome上出现以下错误: 但是,该请求已包含在请求中,并已成功发送到服务器。我似乎已经正确配置了所有内容以允许服务器和客户端上的标头: 对于服务器,我有以下这些: 对于客户,我指定了这些: 为什么会出现此错误? 问题答案: 您从Chrome浏览器中收到该错误,因为根据XHR规范,该方法不应使用禁止的标头名称设置标头。 根据规范: 这些

    • 我有一个PHP脚本,它成功地返回一些简单的头以及一个set-cookie头,如果在浏览器中直接调用(或由邮递员)。我可以从chrome DevTools上读到这样的响应标题。但是当我用Axios调用它时,set-cookie头就不会显示出来,浏览器中也没有保存cookie。 我尝试了不同的方法,比如在服务器端更改响应头,并在axios中使用“with Credentials:true”,但都不起作

    • 问题内容: 刚收到安全审核的结果-除两件事外,其他一切都清晰可见 没有http标志的会话cookie。 没有设置安全标志的会话cookie。 该应用程序是用php编码的,修复建议为: 使用仅http标志设置会话cookie 使用安全标志设置会话cookie 我看过一些示例,但并不完全了解如何在Linux服务器上实现。我无权访问 .ini 文件。是否可以在htaccess文件中进行设置? 或者,如何

    • 即使响应包含ajax请求的“设置cookie”头,cookie也不会存储在浏览器上。 请求代码: 收到的响应标题: 访问控制允许凭据:true 访问控制允许标头:X-request-With、accept、内容类型、Cookie 访问控制允许方法:POST、GET、PUT、OPTIONS、DELETE 访问控制允许来源:http://myapp2.com:7011 访问控制最大年龄:3600 内容

    • 我的后端是sprin引导应用程序,前端是vue js 但是cookie值没有设置在请求头部和所有其他api失败与身份验证问题,因为cookie值(会话ID)不存在于头部 样本响应头部与set-cookie身份验证 下面是我在vue.config.js中的代理配置 这是我的axios实例创建与"with凭据:真" 下面是我在服务器端的web安全配置 注意:这在邮递员中工作,因为邮递员会自动将cook