Фильтр случайным образом не считывает заголовок cookie, если не добавляются журналыJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Фильтр случайным образом не считывает заголовок cookie, если не добавляются журналы

Сообщение Anonymous »

Я работаю над приложением Spring Boot + Angular, где сталкиваюсь с странной проблемой, связанной с файлами cookie и фильтрами.

Код: Выделить всё

CookieValidationFilter
) В весенней загрузке, которая проверяет для SessionCookie в заголовке cookie .

[*] Из углового фронта В: < /p> [*] Однако, если я добавляю несколько операторов журнала отладки в фильтр, например, заголовки печати, проблема исчезла, и она начинает работать, как и ожидалось. Никаких изменений в конфигурации переднего, заднего или браузера, просто наличие журнала, кажется, не изменяет поведение.

[*] Правильно установлен фронт-энд, и я могу видеть его в инструментах Dev Browser под накладкой «Cookies». На вкладке «Сеть» не показывает заголовок cookie . Безопасный; SameSite = none .


Мой код такой, как ниже:

Код: Выделить всё

ContentCachingRequestFilter
:

Код: Выделить всё

@Component
public class ContentCachingRequestFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper((HttpServletRequest) servletRequest);
filterChain.doFilter(requestWrapper, servletResponse);
}
}
< /code>
CookieValidationFilter
(упрощенное):

Код: Выделить всё

@Component
public class CookieValidationFilter extends OncePerRequestFilter {

private final ObjectMapper objectMapper;

public CookieValidationFilter(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {

String cookieHeader = request.getHeader(HttpHeaders.COOKIE);
boolean hasSessionCookie = cookieHeader != null && Arrays.stream(cookieHeader.split(";"))
.map(String::trim)
.anyMatch(c -> c.startsWith("SessionCookie=") && !c.equalsIgnoreCase("SessionCookie="));

if (!hasSessionCookie) {
ApiResponse apiResponse = ApiResponse.builder().httpStatus(Constants.UNAUTHORISED_ACCESS_CODE)
.statusMessage(Constants.UNAUTHORIZED_MSG)
.userMessage(Constants.YOU_ARE_NOT_AUTHORIZED_TO_ACCESS_THE_FEATURE_MSG).errorMessage(null)
.data(null).messageSeverity(null).validationErrors(null).build();

response.setStatus(Constants.UNAUTHORISED_ACCESS_CODE);
response.setContentType("application/json");
response.getWriter().write(objectMapper.writeValueAsString(apiResponse));
return;
}

filterChain.doFilter(request, response);
}
}
< /code>
Why would accessing or logging headers (e.g., with request.getHeaderNames()
) влиять на то, получает ли заголовок cookie бэкэнд в пружине? Collections.list (request.getheadernames ()). Foreach (request :: getheader)
[*] Расширенное OnePerquestFilter для ContentCachingRequestFilter
[*] Обеспечение правильной настройки CORS (

Код: Выделить всё

allowCredentials(true)
, точное происхождение)
[*] Обеспечение использования фронтальных средств: true
[*] cookie отправляется с samesite = none; Безопасный; Httponly < /code> < /li>
< /ul>
Тем не менее, поведение противоречиво, если не добавлено ведение журнала отладки, что не имеет смысла. < /P>
: < /h3>
  • < /br />

    < / /li>


    < /br /li>


    < /br /li>


    Встроенный
  • Работаю локально с помощью HTTPS включена
Любые идеи, почему это происходит или как обеспечить постоянную обработку cookie в пользовательских фильтрах, не полагаясь на журналы отладки?


Подробнее здесь: https://stackoverflow.com/questions/796 ... -are-added
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»