我们遇到了问题,用户最终会在我们的网站上以“空的GET请求”。 通过这个我的意思是说,他们起源于外部网站作为POST请求与几个PARAMS,但浏览器只会做一个简单的GET没有PARAMS我们的服务器。
无论是浏览器等,还是大量使用各种技术的网站,都会发生这种情况。
无论什么原因,更新我们的证书(已经工作了18个月)解决了这个问题。 旧证书来自Verisign,新证书来自Thawte。
水平线以下是原来的问题。
我们有一个服务,我们希望各种webstores通过HTTPS和数据有效载荷将POST数据作为nvp POST参数发送给我们。 这些数据中很less有一些是转换为GET请求的地方,有效负载丢失,所以他们来到我们的服务器作为GET请求没有任何参数。
当我们得到一个GET请求时,我们的负载均衡器或者POST请求的防火墙上没有任何符号,它们将以任何方式连接到我们正在接收的GET。 GET通常是我们可以从给定IP看到的第一个传入请求。
除了几乎所有的客户端计算机都是各种版本的Windows之外,似乎没有其他共同的因素。 浏览器至less可以是Firefox,IE或Chrome的任何一种。
另一个通过用户浏览器提交数据的站点(使用方法POST的forms)可以使用任何但不限于以下内容;
PHP,Java,Ruby on Rails,.NET
Linux,Windows
Apache,Nginx,IIS,Tomcat,Cowboy
Drupal,Magento,Joomla,Prestashop,专有和内部解决scheme
该问题影响来自多个不同网站的客户,这些网站似乎没有任何共同之处。 另外,用户似乎并不是来自特定的ISP。
什么似乎发生的是,POST请求消失,永远不会到达我们的任何服务器。 不知何故浏览器发送一个GET请求,而没有任何参数。 然而,引用者是完整的,根据我们的testing手段,用户不能select浏览器地址字段并按下input,因为这会丢失引用者头部。 通过一次或几次重试(浏览器返回,在推荐站点上重新提交提交),POST应该通过
另外根据我们所听到的最终用户对此的评论,他们没有得到浏览器的错误信息。
服务器到服务器调用似乎不受此问题的影响。 看起来这个问题是在7月14日开始的,在这个date之后,我们每天都会收到这些问题的要求。 它从一天开始只有几天,并且一直在稳步上升,现在已经达到了我们收到我们API所有要求的每天约5%。
所以,这在推介网站上看起来并不是一个问题,因为它会影响网站的平台变化,没有共同的因素。 它看起来像是一个Windows问题,因为问题用户代理实际上是各种版本的窗口,但它会影响所有的浏览器,所以它可能是什么?
任何build议都欢迎在这一点上。
编辑:我们会看到,如果这是一个HTTP – > HTTPSredirect在我们testing,并发现HTTP请求在负载平衡器日志。 非www到wwwredirect也会发生在我们的负载均衡器AFAIK,我们也会看到。 还忘了提到我们从受影响的网站获得大部分有效的数据,这只是一小部分请求的行为不正常。
编辑: *解决(种)*作为其中之一“有现在的方式,这将有所帮助,但我们试试无论如何,因为我们不知道什么是错的”我们安装了一个新的证书。 自从安装新的证书后,这个问题就不复存在了。
我们目前还不知道证书如何导致我们遇到的行为。 AFAIK如果证书有问题,浏览器会提示用户采取行动(从我们所听到的,没有人收到任何提示),或者根本不与服务器通话或正常继续。 我不希望浏览器将POST更改为GET并转储所有参数。 旧证书安装正确,还有一年半以来如何能够完美地工作?
无论哪种方式,大约一个星期内都没有发生过病例。 在日志中显示这些问题案例之一的最后一个条目在安装新证书之前的大约几分钟时间内定时…
很难猜测,但我会redirect,更具体地说,HTTP – > HTTPSredirect。 为了成为这种情况,需要在服务器上将HTTPredirect到HTTPS,并且可能在日志中看不到这些日志,因为您可能在不同的地方使用它们。
所以,情况将是客户端由于某种原因(某些forms的某些地方错过了正确的scheme)发送到HTTP,获取redirect代码并使用GET导航到HTTPS。
如果不是这种情况,它可能是不同的redirect(如非www到www前缀或类似)。 您应该在日志中看到这些信息,但是由于某种原因,您可能会错过它们(基于HTTP代码进行过滤)。 但是这不像HTTP-> HTTPSredirect那样可能。
那么,是这样或者你能certificate情况并非如此吗?