【问题标题】:Flutter Web - Request Headers missingFlutter Web - 缺少请求标头
【发布时间】:2020-03-05 09:23:50
【问题描述】:

我通过使用 Dio 发送请求在 Android 和 Web 上运行完全相同的代码,我看到的是,当我从浏览器发送请求时,我的后端没有获得我自定义添加的标头,但如果我这样做一切正常模拟器也一样。

CORS 已在我的后端正确设置。

Dio dio = Dio();
dio.options.headers[HttpHeaders.authorizationHeader] = "Bearer $token";
final Response response = await dio.get("http://$host:$port/$path", queryParameters: {"searchText": searchQuery, "page": 0, "pageSize": 100});

其他信息

发布请求工作正常,只有获取请求中缺少标头。我使用 http 或 dio 包。

但是,当我注销请求的所有标头时,我可以在服务器日志中看到以下行:

headerName: access-control-request-headers
header: authorization

有人见过类似的吗?

【问题讨论】:

    标签: flutter flutter-web dio


    【解决方案1】:

    看来我必须在 spring security 中单独启用 cors。

         httpSecurity.csrf().disable()
                .cors().and()
                .authorizeRequests()
                .antMatchers("/api/admin/**").hasRole("ADMIN")
                .antMatchers("/api/support/**").hasRole("SUPPORT")
                .antMatchers("/**").permitAll()
    .and().exceptionHandling().authenticationEntryPoint(jwtAuthenticationEntryPoint)
    .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
    
    httpSecurity.addFilterBefore(jwtRequestFilter, UsernamePasswordAuthenticationFilter::class.java)
    

    一旦我这样做了,一切都开始工作了。

    总之, 我在其他地方使用了我的自定义标头,这些标头由我的全局 CorsFilter 处理,但与 Authorization 等与 spring-security 相关的标头由 spring-security 处理,因此无论我添加 Authorization,都必须在那里启用 cors到我的全球CorsFilter 与否。

    【讨论】:

      猜你喜欢
      • 2022-10-18
      • 2018-10-31
      • 2018-04-15
      • 1970-01-01
      • 2018-04-06
      • 1970-01-01
      • 2019-06-23
      • 2015-11-08
      • 2022-01-19
      相关资源
      最近更新 更多