내가하려는 것은 내 2.1 게임에서 CORS에 대한 지원을 구축하는 것입니다. 그 전제는/admin의 경로에서 들어오는 모든 것이 응답에 CORS 헤더를 가져와야한다는 것입니다. 이것은 StackOverflow를 통해 함께 자갈을 잘라 붙인 솔루션으로 충분합니다. 내 Controller 액션 각각은 CORS 헤더를 응답에 포함시키는 랩핑 된 Action을 활용합니다. 문제는 나의 순진 구현은 이제 내 경로 파일에 존재하지 않는 URL에 대한 OPTIONS 요청에서 200 OK를 반환합니다! 순항 컨트롤러를 수정하여 경로 파일에 URL이 있는지 확인하고 경로를 찾지 못하면 404 찾을 수 없습니까?내 작업 내에서 경로 조회 수행하기
conf의/루트
# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~
# Home page
GET / controllers.Application.index
GET /hb controllers.Application.hb
# Admin API
POST /admin/sessions controllers.admin.Sessions.session
GET /admin/apps controllers.admin.Apps.index
OPTIONS /admin/*url controllers.admin.Admin.options(url: String)
# Map static resources from the /public folder to the /assets URL path
GET /assets/*file controllers.Assets.at(path="/public", file)
내 관리 컨트롤러 내가
OPTIONS /admin/sessions HTTP/1.1
HTTP/1.1 200 OK
및
OPTIONS /admin/sessions HTTP/1.1
HTTP/1.1 200 OK
,536을 기대
object Admin extends Controller {
val log = LoggerFactory.getLogger(getClass())
def options(url: String) = CORS_Writer {
Action {
log.trace("options(url: {}", url);
/*
* I need to validate that url exists in the routes file here
* (this doesn't compile, but conceptually is what I want).
*/
if(routes(url)) { Ok } else { NotFound }
}
}
}
처리하는 일반적인 옵션을 제공합니다
하지만
OPTIONS /admin/bob HTTP/1.1
HTTP/1.1 404 Not Found
나는 스칼라 모두 새로 온 사람과 플레이 나는 재생 2.1 문서가 심하게 루트 작업의 세부 사항에 대한 부족 찾을 수 있습니다. 이 질문이 단순한 것처럼 보이는다면 실례합니다. 나는 이것이 가능하다는 것을 확신한다, 나는 단지 주문을 모른다.
경로 파일 (OPTIONS/admin/* url controllers.admin.Admin.options (url : String))의 모든 옵션을 내 wildcarding으로 인해 작동하지 않을 것이라고 생각합니다.이 와일드 카드로 수행 한 작업은 다음과 같습니다. 항상 핸들러가 있도록 만들었습니다. –