У меня есть интерфейсный сервер с портом 8081 фоновый сервер с портом 8080 (Spring MVC + shiro)
Когда я отправляю запрос на 8080, я должен установить заголовки cors на 8080
Если запрос является простым запросом, который возвращает только некоторые данные json, он работает
Но когда статус ответа 302, Chrome показывает
Redirect from 'http://localhost:8080/' to 'http://localhost:8080/' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Я думал, что есть две причины возникновения этой проблемы:
① если я перехватываю этот статус 302 и раздаю этот response.headers.Location,
Я решу это. Но я не могу перехватить этот ответ (с аксиомами)
② Возможно, некоторые настройки неверны с сервером 8080, когда происходит 302, серверу не установлены заголовки cors для этой страницы. Но я не понимаю бэкэнд-код.
Итак, ① возможно? или мне нужно поменять настройки на сервере 8080?





Междоменный CORS отправит запрос к OPTIONS заранее, этот запрос не прикрепляет токены, это приводит к перехвату запроса shiro, чтобы определить, что текущий пользователь не вошел в систему, что вызывает проблемы, решение заключается в наследовании FormAuthenticationFilter.
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
boolean allowed = super.isAccessAllowed(request, response, mappedValue);
if (!allowed) {
String method = WebUtils.toHttp(request).getMethod();
if (StringUtils.equalsIgnoreCase("OPTIONS", method)) {
return true;
}
}
return allowed;
}
этот вопрос сложен для понимания, обратитесь к этой странице и отредактируйте свой вопрос: stackoverflow.com/help/how-to-ask