Search code examples
javascriptajaxcorsisomorphic-fetch-api

How to get response headers from ajax post request


I want to retrieve response headers sent by server. But i am getting empty object. I can see response headers in chrome dev tools, but can't get them from javascript.

(I am using isomorphic-fetch lib for xhr requests.)

        fetch("http://my.cors.url/postsomedata", {
            method: 'POST',
            headers: {
                Accept: 'application/json',
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(myjsobject),
        })
        .then(response => response.headers)
        .then((headers) => {
            console.log(headers); // empty object
        })

This is not dublicate of How to get Response headers in AJAX I am not using jQuery.


Solution

  • The problem was on my back-end server CORS configuration. I am using spring boot, so in order do pass custom headers into xhr response i need to configure spring boot application in following way

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                        .exposedHeaders("MyHeader");
            }
        };
    }