더북(TheBook)

이는 서버에서 Access-Control-Request-Headers: content-type 헤더를 받는 cors가 구성되지 않아 발생한다. 현재 OPTIONS 요청을 거부하는 경우의 에러 상황을 처리하지 않으므로 return_error 핸들러에서 기본적으로 404 Not Found 메시지를 사용한다.2 Warp에는 CorsForbidden 거부 타입이 포함되어 있으므로 에러 핸들러에서 임포트하여 사용한다.

코드 3-19 CORS가 허용되지 않을 때 의미 있는 에러를 추가하기

use warp::{Filter, reject::Reject, Rejection, Reply, http::StatusCode, http::Method, filters::{
        cors::CorsForbidden,
    }
};

...

async fn return_error(r: Rejection) -> Result<impl Reply, Rejection> {
    if let Some(error) = r.find::<CorsForbidden>() {
        Ok(warp::reply::with_status(
            error.to_string(),
            StatusCode::FORBIDDEN,
        ))


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.