게시물 화면에는 그림이 멀쩡히 보였다. 그런데 상태표에는 깨진 이미지라고 적혔다. 웹 게시물의 원격 이미지가 실제로 로드되는지 확인하는 자동 검사기가 첫 응답인 302에서 판정을 끝냈기 때문이다.
실제 흐름은 실패가 아니었다. 이미지 주소는 저장소의 다른 주소를 가리켰고, 그곳에서는 200 응답과 함께 파일을 받을 수 있었다. 검사기가 리디렉션을 따라가도록 바뀌자 같은 이미지는 정상으로 분류됐다.
이런 차이는 CDN이나 객체 저장소를 쓰는 웹사이트에서 쉽게 생긴다. 사용자의 브라우저는 이동할 주소를 받아 계속 진행하지만, 첫 상태 코드만 기록하는 검사는 중간 응답을 최종 결과로 착각한다. 화면과 감시 결과가 서로 다른 현실을 보고하게 되는 셈이다.
자산 검사의 기준은 첫 응답이 200인지가 아니라, 정해진 범위 안에서 마지막 주소까지 도달해 파일을 받을 수 있는지여야 한다. 마지막 응답이 200이어도 이미지가 아닌 내용을 돌려줄 수 있으므로 필요하면 콘텐츠 유형까지 확인해야 한다.
리디렉션을 무제한 허용하는 것도 답은 아니다. 반복 이동, 응답 지연, 허용하지 않은 주소로의 전환은 별도 실패로 다뤄야 한다. 한 개의 상태 코드 대신 제한된 응답 사슬을 검사해야, 정상 이미지를 장애로 만들지 않으면서 우회 위험도 남겨두지 않는다.