http headers - Los axios obtienen acceso a los campos de encabezado de respuesta
http-headers es6-promise (5)
Estoy creando una aplicación frontend con React y Redux y estoy usando axios para realizar mis solicitudes. Me gustaría tener acceso a todos los campos en el encabezado de la respuesta. En mi navegador puedo inspeccionar el encabezado y puedo ver que todos los campos que necesito están presentes (como token, uid, etc.), pero cuando llamo
const request = axios.post(`${ROOT_URL}/auth/sign_in`, props);
request.then((response)=>{
console.log(response.headers);
});
Solo consigo
Object {content-type: "application/json; charset=utf-8", cache-control: "max-age=0, private, must-revalidate"}
Aquí la pestaña de red de mi navegador, como puede ver, todos los demás campos están presentes.
Bests.
En caso de solicitudes CORS, los navegadores solo pueden acceder a los siguientes encabezados de respuesta de forma predeterminada:
- Control de caché
- Lenguaje de contenido
- Tipo de contenido
- Expira
- Última modificación
- Pragma
Si desea que su aplicación cliente pueda acceder a otros encabezados, debe configurar el encabezado Access-Control-Expose-Headers en el servidor:
Access-Control-Expose-Headers: Access-Token, Uid
Enfrenté el mismo problema en asp.net core Espero que esto ayude
public static class CorsConfig
{
public static void AddCorsConfig(this IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder
.WithExposedHeaders("X-Pagination")
);
});
}
}
Estaba enfrentando el mismo problema. Hice esto en mi "WebSecurity.java", se trata del método setExposedHeaders en la configuración de cors.
@Bean
CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowCredentials(true);
configuration.setAllowedOrigins(Arrays.asList(FRONT_END_SERVER));
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"));
configuration.setAllowedHeaders(Arrays.asList("X-Requested-With","Origin","Content-Type","Accept","Authorization"));
// This allow us to expose the headers
configuration.setExposedHeaders(Arrays.asList("Access-Control-Allow-Headers", "Authorization, x-xsrf-token, Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, " +
"Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
Espero que funcione.
Esto realmente me ayudó, gracias Nick Uraltsev por tu respuesta.
Para aquellos de ustedes que usan nodejs con cors :
...
const cors = require(''cors'');
const corsOptions = {
exposedHeaders: ''Authorization'',
};
app.use(cors(corsOptions));
...
En el caso de que envíe la respuesta en forma de
res.header(''Authorization'', `Bearer ${token}`).send();
Me enfrento al mismo problema.
Configuré
Access-Control-Expose-Headers: Set-Cookie
y todavía no puedo leer el valor de los encabezados