强制HTTPS导致请求从POST更改为GET

我最近在我的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] 

我正在集成的服务之一是使用HTTP POST与我的服务进行通信。 但是,他们注意到,自从实现这个configuration并调用http://,当我的服务器强制通过https进行调用时,请求types从POST更改为GET,POST消息被删除。 我想知道是否有一种方法来更新此代码,以强制原始的POST / GET方法保持不变。

呼叫服务已经中断,但是除非你能修复呼叫者,否则你可以做的事情不多。 从RFC 2616:

注意:在收到301状态码后自动redirectPOST请求时,一些现有的HTTP / 1.0用户代理将错误地将其更改为GET请求。

您的select是:

  • 修复调用服务,以便它遵循正确的redirect。
  • 让呼叫服务使用httpsurl。
  • 不要将httpredirect到https服务。