При внедрении OAuth2 Spring Security я с трудом получал какие-либо из концов, чтобы ответить на меня. Когда POSTing в/oauth/токен, org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping говорил мне, что POST не разрешен. В конце концов я нашел виновник в моем отображении для вариантов запросов:OAuth2 плохое взаимодействие только с методом @RequestMapping
@RequestMapping(method = RequestMethod.OPTIONS)
public void systemOptions() { }
HandlerMapping аннотаций в конечном счете не может найти точное соответствие и разрыхляет ограничения нет, чтобы обеспечить полезный «Нет прямой матч, но вы можете изменить типы носителей или HTTP-метод ". Это замечательно и все, но исключение, которое бросает этот HandlerMapping, не позволяет DispatcherServlet продолжать обрабатывать другие HandlerMappings - одним из которых является OAuth2 FrameworkMappings (именно это я хотел бы, чтобы он отображал меня в первую очередь).
Мой метод systemOptions() существует как RequestMapping только для поддержки запросов CORS OPTIONS от браузеров. У меня есть другой фильтр, который добавляет соответствующие заголовки, связанные с CORS, ко всем запросам.
Теперь мои варианты кажутся довольно резкими, и я хотел бы, чтобы некоторые сообщения сообщества были сделаны, прежде чем я вскочу в этот глубокий конец. Должен ли я обрабатывать запросы CORS OPTIONS полностью внутри фильтра? Должен ли я изменить порядок моих обработчиков Handler? Есть ли лучший способ для меня обрабатывать запросы CORS OPTIONS?
Хорошие баллы. Я буду использовать 'Фильтр' вместо' RequestMapping' и пометьте этот вопрос, как вы предложили. –