O aplicativo Rails retorna o HTTP 422 para o novo ServerAlias - somente o Internet Explorer

1

Eu tenho um aplicativo Rails de longa data em execução no Mac OS X (apache2). A configuração usa os hosts virtuais do Apache e o Passenger. O aplicativo Rails também usa autenticação básica HTTP.

Eu preciso migrar o aplicativo de um domínio de URL para outro - com alguma sobreposição de ambos os nomes de domínio acessíveis simultaneamente por um período.

Para fazer isso, adicionei o novo nome de domínio como um ServerAlias do nome de domínio existente na configuração do Host Virtual do Passenger.

Agora posso navegar no aplicativo Rails usando o URL legado e o novo URL de qualquer um dos seguintes: Safari, Chrome, Firefox ou Internet Explorer.

Eu também posso atualizar "postagens HTTP" para o aplicativo Rails usando o Safari, o Chrome ou o Firefox. Tudo bem.

Exceto, tenta postar atualizações do resultado do Internet Explorer no aplicativo Rails rejeitando a atualização,

O log do aplicativo Rails contém a mensagem

ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):

Eu tenho outros domínios & aliases funcionando bem nessa mesma máquina.

Qualquer sugestão sobre o que está fazendo com que o aplicativo Rails rejeite as postagens do IE seria bem-vinda.

UPDATE: Eu tentei alterar o novo domínio para ser ServerName e o domínio antigo para ser o ServerAlias, mas ainda obter o 422 com o novo nome de domínio. Estou perplexo.

    
por Snips 28.10.2012 / 11:11

2 respostas

0

Eu não sei porque isso funciona, mas na esperança de que isso ajude alguém ...

Descobri que os POSTs Rails do MSIE são aceitos se eu configurei o novo URL para usar o mesmo subdomínio.

Então,

Se estiver configurado como

originalsubdomain.originaldomainname.com

Se você configurar o novo URL como

newsubdomain.newdomainname.com

... então o Safari, o FireFox e o Chrome estão todos felizes, mas o MSIE faz com que o Rails se atrase em um POST (testado em várias máquinas).

No entanto, se eu configurar o novo URL,

originalsubdomain.newdomain.com

Funciona totalmente com todos os navegadores listados (testados em várias máquinas).

Sugestões sobre por que isso pode ser apreciado.

    
por 01.11.2012 / 16:15
0

Assista os logs de perto, você deve ter um símbolo não codificado lá.
422 significa que você recebeu uma solicitação correta, mas ela não pode ser processada devido a problemas de codificação (geralmente).

Do rfc

The 422 (Unprocessable Entity) status code means the server
understands the content type of the request entity (hence a
415(Unsupported Media Type) status code is inappropriate), and the
syntax of the request entity is correct (thus a 400 (Bad Request)
status code is inappropriate) but was unable to process the contained
instructions.  For example, this error condition may occur if an XML
request body contains well-formed (i.e., syntactically correct), but
semantically erroneous, XML instructions.
    
por 28.10.2012 / 13:15