Spring Rest Controller - Можно ли разрешить CORS в перехватчике? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть перехватчик:

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new RequestInterceptor());
    }

Могу ли я добавить свою конфигурацию CORS в RequestInterceptor.java выше? Как это:

public class RequestInterceptor extends HandlerInterceptorAdapter
   {
   ...

   public boolean preHandle(
            HttpServletRequest request,
            HttpServletResponse response,
            Object handler) throws Exception {
       ...
       ...
       if (request.getMethod().equals("OPTIONS")) {
            response.setHeader("Access-Control-Allow-Origin", "http://localhost:9090");
            response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
            response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
            response.setHeader("Access-Control-Expose-Headers", "*");
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Max-Age", "4800");
        }
        ...
        return true;
    }
 }

Я не хочу ни одного из этих методов, потому что по какой-то причине они не работают для меня:

@CrossOrigin
   OR
WebMvcConfigurerAdapter -> addCorsMapping()

Единственное, что работает для меня, это наличие CORSFilter и отображение его в web.xml. Но это заставило меня задуматься о том, что перехватчики тоже своего рода фильтр, не так ли? Тогда зачем добавлять фильтр И перехватчик, когда сам перехватчик будет делать.

В любом случае, я пытался использовать приведенный выше фрагмент кода, и мои запросы приземляются на сервере, а метод остальных контроллеров запущен, но я вижу этот ответ на моей странице ReactJs:

SEC7120: Origin http://localhost:9090 not found in Access-Control-Allow-Origin header.

SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied.

Что мне не хватает? Есть ли что-то еще, что я должен сделать в классе RequestInterceptor.java для CORS?

Спасибо.

...