在实现Spring Security的OAuth2时,我很难得到任何端点对我的响应。当对/oauth/ POSTing执行POST时,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping告诉我不允许POST。我最终在OPTIONS请求的映射中找到了罪魁祸首:
@RequestMapping(method = RequestMethod.OPTIONS)
public void systemOptions() { }批注的HandlerMapping最终无法找到精确匹配,并放松约束以提供有用的“无直接匹配,但您可以更改媒体类型或HTTP”类型异常。这很好,但是这个HandlerMapping抛出的异常阻止了DispatcherServlet继续处理另一个HandlerMappings -其中一个是OAuth2 FrameworkMappings (这是我首先希望它映射到的)。
我的systemOptions()方法作为一个RequestMapping存在,只是为了支持来自浏览器的CORS OPTIONS请求-我有另一个过滤器,它向所有请求添加适当的CORS相关头。
我现在的选择似乎相当激烈,在我跳入这个深度之前,我想要一些社区的意见。我应该完全在过滤器中处理CORS选项请求吗?我应该更改我的HandlerMappings的顺序吗?有没有更好的方法来处理CORS OPTIONS请求?
发布于 2015-01-20 17:06:47
我认为大多数人在这一点上使用Filter作为CORS头(尽管Spring4.2应该有一些更细粒度的支持)。如果我是你的话,我会说问题出在RequestMappingHandlerMapping上,所以我会在Stackoverflow上问这个问题,或者在JIRA中提出一个问题,同时使用Filter。
注意:这不是一个真正的OAuth问题。也许可以在你的标签中添加"spring-mvc“?
https://stackoverflow.com/questions/28034721
复制相似问题