Проблема CORS проекта Spring boot 2.0.5: добавьте заголовок CORS в ответ http - PullRequest
1 голос
/ 14 октября 2019

Я знаю, что многие посты в SO говорят об этом. Но я пробовал полдня, но все равно не смог.

Я попробовал:

  1. добавить метод ниже в моем Application классе:
@Bean 
public WebMvcConfigurer corsConfigurer() {
    return new WebMvcConfigurer() {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**").allowedOrigins("*");
        }
    };
}
добавить автономный .java файл в мой проект:
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
    }
}

3 добавить аннотацию уровня контроллера @CrossOrigin как для моего класса контроллера, так и для метода пост-отображения:

@CrossOrigin
@PostMapping(value="/api/photoUpload/tester")
String tester(HttpServletRequest request) {

Но мой скрипач никогда не показывает нужный http резонансный заголовок. Есть идеи.

1 Ответ

1 голос
/ 14 октября 2019

Добавьте эту дополнительную конфигурацию в ваш проект.

@Configuration
public class AdditionalConfig {

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }
}


, если она не будет работать. тогда вы можете попробовать использовать фундаментальные Servlet filter, отличные от возможностей, предоставляемых средой Spring.

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class CORSFilter implements Filter {

    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
            throws IOException, ServletException {

    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers",
                "X-Requested-With, Content-Type, Authorization, Origin, Accept, Access-Control-Request-Method, Access-Control-Request-Headers");
        chain.doFilter(req, res);
    }

    @Override
    public void init(FilterConfig filterConfig) {
    }

    @Override
    public void destroy() {
    }

}



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...