Мы внедрили CORS Interceptor в наше приложение, чтобы разрешить доступ к нашим API конкретным доменам. UrlMappings для этих правил соответствуют шаблону.
"/api/domain/[sub-action]"(controller: "anotherController", action: "actionEndpoint", method: "PUT" )
Это работает нормально, однако запросам POST и PUT предшествует запрос OPTIONS, которого нет в отображении, поэтому он фактически пытается перейти к apiController. Это заканчивается тем, что CORS Interceptor обрабатывает запрос OPTIONS для apiController, прежде чем UrlMappings получит возможность переписать его туда, куда он должен идти.
Я обнаружил, что могу решить следующие проблемы:
"/api/domain/[sub-action]"(controller: "anotherController") {
action = [ PUT: "actionEndpoint", OPTIONS: "actionEndpoint" ]
}
Однако я действительно не хочу делать это для каждой конечной точки POST / PUT / DELETE, которая у нас есть.
Я пытался создать такие правила, как:
"/api/**/*"(method: "OPTIONS")
"/api/**/*"(controller:"*", action: "*", method: "OPTIONS")
Оба из которых привели к ошибкам.
Есть ли способ подстановки символа OPTIONS для пути / api, чтобы мне не приходилось изменять каждое имеющееся у нас отображение?