브라우저는 이 응답을 허용으로 받아들이고 원래 사용자의 PUT 요청을 이어 보낸다. 이제 거부되는 경로도 구현해 보자. 코드에서 헤더 허용 부분을 지우고 println!을 에러 처리 구문에 추가한 후 curl을 다시 실행해 보자.
코드 3-16 CORS가 실패할 때 받는 에러 타입을 디버깅하기
...
async fn return_error(r: Rejection) -> Result<impl Reply, Rejection> {
println!("{:?}", r);
if let Some(InvalidId) = r.find() {
Ok(warp::reply::with_status(
"No valid ID presented",
StatusCode::UNPROCESSABLE_ENTITY,
))
} else {
Ok(warp::reply::with_status(
"Route not found",
StatusCode::NOT_FOUND,
))
}
...
}
...