Flutter Web - Отсутствуют заголовки запроса - PullRequest
0 голосов
/ 05 марта 2020

Я запускаю точно такой же код на Android и в Интернете, используя Dio для отправки запросов, и я вижу, что мой бэкэнд не получает мои пользовательские добавленные заголовки при отправке запроса из браузера, но все работает нормально, если Я делаю то же самое с эмулятора.

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});

Дополнительная информация

почтовый запрос работает нормально, заголовок отсутствует только в запросах get. Либо я использую пакеты http или dio.

Однако, когда я выхожу из всех заголовков запроса, я вижу в журналах своего сервера следующую строку:

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

Кто-нибудь видел что-то подобное?

1 Ответ

0 голосов
/ 08 марта 2020

Как мне кажется, мне пришлось отдельно включать 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 или нет.

...