Como redirecionar o pedido de postagem HTTP

1

Oi Eu estou usando o código abaixo no meu arquivo httpd.conf apache para redirecionar de HTTP para HTTPS

<VirtualHost 10.1.2.91:80>
Redirect 302 /GladQE/link https://glad-test.com/GladQE/link.do
Redirect 302 /GladQE/retrieve https://glad-test.com/GladQE/retrieve.do
</VirtualHost>

Isso redireciona os parâmetros de uma solicitação get, mas não de uma postagem. Da leitura aqui parece que isso precisa ser feito usando o mod_rewrite.

Alguém pode me ajudar com as emendas que eu precisaria fazer para que, quando o link à esquerda for atingido usando post-params, ele redirecione para o link à direita com os parâmetros intactos?

Muito obrigado

Tom

    
por shawsy 05.06.2013 / 12:31

2 respostas

2

Parece a configuração do Apache? É uma boa ideia especificar coisas assim. As tags confirmam isso.

Essa configuração só é executada quando eles se conectam na porta 443, por isso não é possível redirecionar de HTTP.

Você não pode fazer um redirecionamento de 30 [12] em resposta a uma solicitação POST e manter os argumentos, a menos que você converta a solicitação para um GET e grave os argumentos na URL. Não é realmente recomendado.

Você pode fazer o proxy da solicitação, mas não tenho certeza se isso resolve o problema.

Se o usuário já enviou dados via POST por uma conexão não criptografada e você se preocupa com a criptografia, provavelmente é melhor deixar essa solicitação ser interrompida de qualquer maneira, para que ela seja notada e corrigida. Você deve corrigir seu destino de formulário e também certificar-se de que o próprio formulário (ou a página com AJAX nele ou qualquer outro) seja enviado ao usuário por HTTPS.

UPDATE

Dado que shawsy disse que o problema é que o navegador não pode fazer conexões HTTPS com o servidor, um redirecionamento definitivamente não é o que é desejado. Em vez disso, você deseja fazer o proxy da solicitação:

<VirtualHost 10.1.2.91:80>
  # http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
  ProxyPass /GladQE/link https://glad-test.com/GladQE/link.do
  ProxyPass /GladQE/retrieve https://glad-test.com/GladQE/retrieve.do
</VirtualHost>

Você poderia alternativamente fazer isso com mod_rewrite e RewriteRule.

Existem alguns problemas extras para resolver se você estiver alterando o nome de domínio, mas acho que não é o caso aqui.

Apenas como um aparte, eu pessoalmente não gosto de colocar nomes de host ou endereços IP em nenhum lugar, exceto no arquivo / etc / hosts do servidor. Se você usar nomes no arquivo hosts como 'web' e 'mysql', que localizam serviços em vez de máquinas, e se referem àqueles em seu apache e outros arquivos, você pode mover a configuração entre máquinas muito mais facilmente, sabendo que você só tem que passar por cima do que está no arquivo hosts.

    
por 05.06.2013 / 13:06
1

Você pode usar o redirecionamento 307 para manter o método. De Wikipedia :

In this case, the request should be repeated with another URI; however, future requests should still use the original URI. In contrast to how 302 was historically implemented, the request method is not allowed to be changed when reissuing the original request. For example, a POST request should be repeated using another POST request.

    
por 05.10.2016 / 20:56