Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

ServerSentEventHttpMessageReader does not recognize data fields without a colon

Abierto Apto para principiantes
#37,461 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

  • #37464 de @lejuho — cerrado sin fusionar
  • #37508 de @Yusuf-Hussien — cerrado sin fusionar

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
76/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java, spring
Área
api, backend

Línea de trabajo

Empieza leyendo ServerSentEventHttpMessageReader y la prueba reproducible readServerSentEventsDataWithoutColon del issue. Comprueba cómo analiza el lector las líneas sin dos puntos y luego ejecuta la prueba específica. Se considera terminado cuando los campos de datos sin dos puntos producen los datos de evento esperados, "\n", igual que la forma con dos puntos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

in: web status: waiting-for-triage

ServerSentEventHttpMessageReader does not recognize SSE data fields when the colon is omitted:

id:c42
event:foo
data
data

or

id:c42
event:foo
data

According to the WHATWG HTML specification, a line without a colon must be processed as a field name with an empty value.
Therefore, data and data: should be treated equivalently.

Reproducible test case:

    @Test
    void readServerSentEventsDataWithoutColon() {
        // given
        ServerSentEventHttpMessageReader reader = new ServerSentEventHttpMessageReader();
        String body = """
                id:c42
                event:foo
                data
                data
                """;
        MockServerHttpRequest request = MockServerHttpRequest.post("/")
                .body(body);

        // when
        Flux<ServerSentEvent> events = reader.read(ResolvableType.forClassWithGenerics(ServerSentEvent.class, String.class), request, Collections.emptyMap())
                .cast(ServerSentEvent.class);

        // then - fails
        StepVerifier.create(events)
                .expectNext(ServerSentEvent.builder()
                        .id("c42")
                        .event("foo")
                        .data("\n")
                        .build())
                .expectComplete()
                .verify();
    }

Expected behavior

The reader should follow the WHATWG SSE parsing algorithm:
data\ndata should produce an event with data("\n"), just like data:\ndata:

Actual behavior

The implementation only handles data fields that start with data:
data\ndata produce an event with data(null)

Lenguaje dominante
Java
Estrellas
60.3k
Forks
38.7k
Merge medio
1 d 9 h
PR fusionados (30 d)
34

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de spring-projects/spring-framework

Todos los issues de spring-projects/spring-framework

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.