Ao realizar uma pesquisa no nosso site Discourse, se eu fizer uma solicitação GET regular para /search?q=minha pesquisa, funciona normalmente. Mas se eu usar a caixa de pesquisa e ela enviar a solicitação de pesquisa via uma solicitação GET XHR, recebo um retorno com status 406.
Após alguns testes adicionais com o Postman, descobri que apenas adicionar o cabeçalho X-Requested-With: XMLHttpRequest à solicitação a quebra. Remova esse único cabeçalho e funciona normalmente. O servidor está atrás do Azure Front Door e contorná-lo para acessar o servidor diretamente não apresenta esse problema. Será que o nginx ou a pesquisa estão fazendo algo especial com base nesse cabeçalho? Ser estar atrás de um proxy reverso pode interferir? Alguma ideia de como corrigir isso?
Seu proxy reverso nunca deve descartar nenhum cabeçalho definido pelo nosso aplicativo cliente. Isso pode resultar em bugs óbvios, mas também em falhas silenciosas que você só descobrirá quando for tarde demais.
Estou assumindo que não é a remoção do cabeçalho, já que outras solicitações XHR funcionam normalmente. Parece que esta é de alguma forma diferente das outras no Discourse.
Não, porque você não está atrás da porta frontal. O problema é causado por passar pelo proxy; só não sei o motivo, já que outras solicitações XHR funcionam bem. Isso sugere que algo relacionado às solicitações enviadas para a busca é tratado de forma diferente pelo Discourse em comparação com outras solicitações XHR.
Não estou usando a funcionalidade do WAF. Vou verificar se consigo identificar algo mais sobre se, de alguma outra forma, ele está descartando cabeçalhos ou algo assim. Apenas parece estranho que isso afete apenas as solicitações de pesquisa.
Outro produto WAF que estive depurando no mês passado também estava quebrando respostas prontas e salvamento de rascunhos. Quando ele quebra funcionalidades usadas com menos frequência, pode levar um tempo para identificar todas as incompatibilidades.
Fiz mais alguns testes e parece que o FD está passando incorretamente pelo menos este cabeçalho HTTP. Já submeti um pedido para que eles corrijam. Ainda não tenho certeza do motivo pelo qual a busca se importa com esse cabeçalho, mas acho que é melhor corrigir o bug do FD.
Geralmente, recomendamos que as pessoas evitem configurações complexas, a menos que tenham requisitos imutáveis que exijam tais configurações. E, nesses casos raros, esperamos que também tenham destinado o orçamento para contratar especialistas que ajudem a gerenciar essa complexidade necessária.