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

Not possible to transform headers per request

Abierto
#82 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
50/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
javascript
Área
api

Línea de trabajo

Comienza rastreando la creación de requests a través de la función interna deepMerge y del punto de entrada transformRequest, comparando cómo se reutiliza el objeto headers entre requests. Verifica el comportamiento con requests repetidos usando el ejemplo de transformRequest mostrado; se considera terminado cuando las transformaciones de headers por request ya no observan mutaciones de requests anteriores y el workaround documentado de custom-fetch sigue siendo innecesario.

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

Descripción

bug

I'm using transformRequest to add custom header to the request before it is sent the following way:

const apiClient = redaxios.create({
  baseURL,
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json; charset=utf-8',
  },
  transformRequest: [(data, headers) => {
      console.log(headers['Payload-Signature']); // <-- here I see header set for previous request
      
      if (data) headers['Payload-Signature'] = signRequestBody(data);
  }],
});

As show in code above headers object is shared between requests and because of that it is not possible to customise headers per requests before one is sent.

The reason is that internal deepMerge function doesn't create a copy of 'options.header' property.

Expected behaviour:
I would expect it is possible to safely transform headers per request or modify other request props.

As a workaround I define a custom fetch:

const apiClient = redaxios.create({
  baseURL,
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json; charset=utf-8',
  },
  fetch: (url, options) =>  fetch(url, {
    ...options,
    headers: {
      ...options.headers,
      'payload-signature': signRequestBody(options.body),
    },
  }),
});
Lenguaje dominante
JavaScript
Estrellas
4.9k
Forks
104
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

Abrir la guía de contribución

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 developit/redaxios

Todos los issues de developit/redaxios

Issues similares

Más issues de JavaScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.