programing tip

Axios는 응답 헤더 필드에 액세스합니다

itbloger 2020. 8. 7. 08:07
반응형

Axios는 응답 헤더 필드에 액세스합니다


React 및 Redux를 사용하여 프론트 엔드 앱을 작성 중이며 axios사용하여 요청을 수행하고 있습니다. 응답 헤더의 모든 필드에 액세스하고 싶습니다. 내 브라우저에서 헤더를 검사 할 수 있고 필요한 모든 필드 (예 : 토큰, uid 등)가 있는지 확인할 수 있지만 호출 할 때

const request = axios.post(`${ROOT_URL}/auth/sign_in`, props);
request.then((response)=>{
  console.log(response.headers);
});

난 그냥

Object {content-type: "application/json; charset=utf-8", cache-control: "max-age=0, private, must-revalidate"}

다른 모든 필드가 표시되는 것처럼 여기 내 브라우저 네트워크 탭.

여기에 이미지 설명을 입력하십시오

최고.


CORS 요청의 경우 브라우저는 기본적으로 다음 응답 헤더에만 액세스 할 수 있습니다.

  • 캐시 제어
  • 내용 언어
  • 컨텐츠 타입
  • 만료
  • 마지막 수정
  • 프라 그마

클라이언트 앱이 다른 헤더에 액세스 할 수있게 하려면 서버 에서 Access-Control-Expose-Headers 헤더를 설정해야합니다.

Access-Control-Expose-Headers: Access-Token, Uid

이것은 정말 저를 도왔습니다. 귀하의 답변에 대해 Nick Uraltsev에게 감사드립니다.

당신이 사용하는 사람들을 위해 nodejs을 함께 고르 :

...
const cors = require('cors');

const corsOptions = {
  exposedHeaders: 'Authorization',
};

app.use(cors(corsOptions));
...

당신이 방법으로 응답을 보내는 경우 res.header('Authorization', `Bearer ${token}`).send();


나는 같은 문제에 직면했다. 나는 "WebSecurity.java"에서 이것을 수행했다. 그것은 cors 구성의 setExposedHeaders 메소드에 관한 것이다.

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

나는 그것이 작동하기를 바랍니다.


asp.net 코어에서 동일한 문제에 직면했습니다.

public static class CorsConfig
{
    public static void AddCorsConfig(this IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy",
                builder => builder
                .WithExposedHeaders("X-Pagination")
                );
        });
    }
}

나는 같은 문제에 직면한다. 설정 Access-Control-Expose-Headers: Set-Cookie했는데도 헤더에서 값을 읽을 수 없습니다.

참고 URL : https://stackoverflow.com/questions/37897523/axios-get-access-to-response-header-fields

반응형