당사 Discourse 사이트에서 검색을 수행할 때, /search?q=my search에 대한 일반 GET 요청을 보내면 정상적으로 동작합니다. 하지만 검색 상자를 사용하여 XHR GET 요청으로 검색을 제출하면 406 상태 코드가 반환됩니다.
Postman으로 추가 테스트를 해본 결과, 요청에 X-Requested-With: XMLHttpRequest 헤더만 추가해도 문제가 발생한다는 것을 확인했습니다. 해당 헤더를 제거하면 정상적으로 동작합니다. 서버는 Azure Front Door 뒤에 위치해 있으며, 이를 우회하여 서버에 직접 요청을 보내면 이러한 문제가 발생하지 않습니다. nginx 또는 검색 기능이 해당 헤더에 따라 특별한 처리를 수행하고 있는 것일까요? 리버스 프록시 뒤에 위치해 있기 때문에 간섭이 발생할 수 있을까요? 수정 방법에 대한 아이디어가 있을까요?
아니요, 프론트 도어 뒤에 있지 않기 때문이 아닙니다. 문제는 프록시를 통해 요청이 전송되기 때문인데, 다른 xhr 요청은 문제가 없으므로 왜 그런지는 정확히 알 수 없습니다. 이는 검색으로 전송되는 요청이 다른 xhr 요청과 달리 Discourse에서 다르게 처리되고 있음을 시사합니다.
추가 테스트를 해본 결과, FD가 이 HTTP 헤더를 적절히 전달하지 않는 것으로 보입니다. 해당 문제를 수정해 달라고 요청을 제출했습니다. 검색 기능이 왜 이 헤더에 신경을 쓰는지는 여전히 명확하지 않지만, 어쨌든 FD의 버그를 먼저 수정하는 것이 더 나은 것 같습니다.