我们已在应用程序中实现了CORS拦截器,以允许特定域访问我们的api。这些规则的UrlMappings遵循。
的模式"/api/domain/[sub-action]"(controller: "anotherController", action: "actionEndpoint", method: "PUT" )
这样可以正常工作,但POST和PUT请求前面有一个OPTIONS请求,它不在映射中,所以它实际上是在尝试转到apiController。最终,CORL拦截器处理apiController的OPTIONS请求,之后UrlMappings有机会将其重写到实际应该去的位置。
我发现我可以执行以下操作来解决此问题:
"/api/domain/[sub-action]"(controller: "anotherController") {
action = [ PUT: "actionEndpoint", OPTIONS: "actionEndpoint" ]
}
但是,我真的不想为我们拥有的每个POST / PUT / DELETE端点做到这一点。
我试图制定如下规则:
"/api/**/*"(method: "OPTIONS")
"/api/**/*"(controller:"*", action: "*", method: "OPTIONS")
这两个都导致错误。
有没有办法对/ api路径的OPTIONS方法进行通配符,这样我就不必修改我们拥有的每个映射?