Flutter Web-缺少请求标头



我使用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});

附加信息

post-request工作正常,get请求中只缺少头。我要么使用http包,要么使用dio包。

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

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

有人见过类似的东西吗?

似乎我不得不单独启用春季安全中的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(由春季安全性处理,因此如果我是否将Authorization添加到全局CorsFilter,则必须在那里启用cors。

相关内容

  • 没有找到相关文章

最新更新