특정 도메인의 이미지를 원박스할 때 발생하는 문제

여기 무슨 일이 일어나고 있는지 좀 알려주실 분 계신가요? :thinking:

이미지 두 장이 있습니다. 이 두 이미지는 완전히 동일합니다. 유일한 차이는 도메인 이름뿐입니다.

Discourse 3.3.0.beta2-dev (7a083daf27)를 실행 중인 제 환경에서 한 이미지는 원박스(onebox) 처리를 거부하고, 다른 이미지는 아무 문제 없이 원박스가 정상적으로 동작합니다.

첫 번째 이미지: https://dronescene.co.uk/images/uploads/temporiginal/test11.png

두 번째 이미지: https://dev.dronescene.co.uk/images/uploads/temporiginal/test11.png

머리를 쥐어짜며 문제가 무엇일지 고민하던 중, 원박스 URL이 URL 끝에 몇 가지 추가 매개변수를 붙여넣고 있다는 사실을 발견했습니다:

하지만 이건 어딘가 다른 단서(red herring)일 것 같습니다 :thinking:

두 이미지를 브라우저 탭에서 직접 보고 브라우저 콘솔의 네트워크 탭에서 HTTP 응답 헤더를 확인해 보았지만, 두 이미지 간에 어떤 차이도 찾을 수 없었습니다.

Discourse 로그에는 오류가 없습니다.

오래전에 설정해 두고すっかり 잊어버린 도메인별 설정을 Discourse에 적용해 둔 건 아닐까요? :thinking:

이미지는 실제로 존재하는데 왜 원박스가 HTTP/404를 반환하는 것일까요? :thinking:

한 URL은 동작하고 다른 URL은 동작하지 않는 이유를 디버깅하려면 어디서부터 시작해야 할까요? :thinking:

관련이 있다면, 두 도메인 모두 Cloudflare를 통해 프록시 처리되고 있습니다 - 하지만 거기의 설정도 모두 동일합니다.

Cloudflare의 주요 용도 중 하나가 봇이 사이트에서 파일을 요청하는 것을 차단하는 것 아닌가요? 의도대로 작동하는 것 같습니다 :laughing:

Cloudflare 설정을 확인해 보세요. 봇 보호를 비활성화할 수 있는 방법이 있을 것입니다.

정말인가요? :thinking:

차이가 뭔가요? :thinking:

Discourse 서버의 IP 주소는 Cloudflare에 화이트리스트로 등록되어 있으며, Discourse가 실행 중인 서버의 명령줄에서 두 이미지 모두를 curl/wget로 가져올 수 있습니다.

왜 하나의 이미지는 원박스가 작동하는데 다른 이미지는 작동하지 않는지 이해하는 데 어려움을 겪고 있습니다.

두 서버를 모두 관리하고 있으므로, 동사, 사용자 에이전트 및 기타 헤더에 이르기까지 정확한 요청 내용을 확인한 뒤 이를 모방하는 cURL 명령으로 재현해 볼 수 있을까요?

아, 훌륭한 아이디어 :+1: