HTTPS forçado Faz com que a solicitação seja alterada de POST para GET

2

Eu recentemente implementei as seguintes configurações de host virtual no meu arquivo apache2.conf:

   # force HTTPS
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteCond %{REQUEST_URI} !^/path1.html
    RewriteCond %{REQUEST_URI} !^/path2.html
    #RewriteCond %{REQUEST_URI} ^/path3.html
    #RewriteCond ${REQUEST_URI} !^/index.html
    RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]

Um dos serviços com os quais estou integrando se comunica com meu serviço usando HTTP POST. No entanto, eles notaram que, desde a implementação dessa configuração e ao fazer uma chamada para http: //, quando meu servidor força a chamada a ser feita por https, o tipo de solicitação é alterado de POST para GET e as mensagens POST são eliminadas. Eu queria saber se havia uma maneira de atualizar este código para forçar o método POST / GET original a ser mantido intacto.

    
por E T 02.01.2013 / 02:14

1 resposta

4

O serviço de chamada está quebrado, mas não há muito o que fazer a menos que você consiga consertar o chamador. De RFC 2616:

Note: When automatically redirecting a POST request after receiving a 301 status code, some existing HTTP/1.0 user agents will erroneously change it into a GET request.

Suas opções são:

  • Corrija o serviço de chamadas para que ele seja redirecionado corretamente.
  • Peça ao serviço de chamadas que use o URL https.
  • Não redirecione http para https para este serviço.
por 02.01.2013 / 02:32