在实施Spring Security的OAuth2时,我很难让任何端点响应我。 POST到/ oauth / token时,org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping告诉我不允许POST。我最终在OPTIONS请求的映射中找到了罪魁祸首:
@RequestMapping(method = RequestMethod.OPTIONS)
public void systemOptions() { }
HandlerMapping for annotations最终无法找到完全匹配并放松约束以提供有用的“无直接匹配,但您可以更改媒体类型或HTTP方法”类型异常。这很好,但是这个HandlerMapping抛出的例外是阻止DispatcherServlet继续处理其他HandlerMappings - 其中一个是OAuth2 FrameworkMappings(这是我想要它首先映射到我的东西) )。
我的systemOptions()方法作为RequestMapping存在,仅支持来自浏览器的CORS OPTIONS请求 - 我有另一个过滤器,可以为所有请求添加适当的CORS相关标题。
我的选择现在看起来非常激烈,在我深入研究之前,我想要一些社区意见。我应该完全在过滤器内处理CORS OPTIONS请求吗?我应该更改HandlerMappings的顺序吗?我有更好的方法来处理CORS OPTIONS请求吗?
答案 0 :(得分:0)
我认为大多数人此时使用Filter
作为CORS标头(尽管Spring 4.2应该有更精细的支持)。如果有什么我会说问题是RequestMappingHandlerMapping
所以我会在Stackoverflow上询问或者在JIRA中提出问题,如果我是你,并在此期间使用Filter
。 / p>
N.B。这不是真正的OAO问题IMO。也许在你的标签上添加“spring-mvc”?