Я получал эту ошибку при вызове '/ oauth/token', когда я делал HTTP-вызов экземпляра сервера, работающего в моей собственной системе. Я исправил это, создав фильтр так:Spring Security OAuth2: канал предпросмотра CORS не удался
@Component
public class SimpleCORSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
HttpServletRequest httpServletRequest = (HttpServletRequest) req;
if (httpServletRequest.getMethod() != "OPTIONS") {
chain.doFilter(req, res);
} else {
// In case of HTTP OPTIONS method, just return the response
}
}
я добавил его в качестве фильтра в WebConfigurer:
private void initCORSFilter(ServletContext servletContext, EnumSet<DispatcherType> disps) {
log.debug("Registering CORS Filter");
FilterRegistration.Dynamic corsFilter = servletContext.addFilter("corsFilter", new SimpleCORSFilter());
Map<String, String> parameters = new HashMap<>();
corsFilter.setInitParameters(parameters);
corsFilter.addMappingForUrlPatterns(disps, true, "/*");
corsFilter.setAsyncSupported(true);
}
Я получаю эту ошибку в FireFox:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://182.176.221.94:9091/ams/oauth/token. (Reason: CORS preflight channel did not succeed).
В Короче говоря, я убедился, что вызов preflight OPTIONS всегда получает ответ, чтобы продолжить. Это работало на моей собственной системе, но теперь, когда экземпляр сервера развернут на сервере Linux, я снова получаю эту проблему. И я получаю это только при вызове «oauth/token», все остальные звонки работают нормально.
Что я могу сделать, чтобы избавиться от этого. Любая помощь?
У меня есть вопрос. Взгляни, пожалуйста. Я уже добавил фильтр в WebConfigurer. Удаление атрибута @Component позволяет остановить работу даже на моей локальной машине. –
это работает для меня без @Component, поэтому что-то не так в вашем проекте. –
. Я добавил дополнительные сведения о несогласованности в вашем фильме о ВАРИАНТАХ –