Ruby on rails 发送长度大于1448字节的Soap XML内容时出现过早的文件结束异常

Ruby on rails 发送长度大于1448字节的Soap XML内容时出现过早的文件结束异常,ruby-on-rails,soap,amazon-ec2,coldfusion,savon,Ruby On Rails,Soap,Amazon Ec2,Coldfusion,Savon,我使用SavonGem将数据从托管在AmazonEC2服务器上的RubyonRails应用程序发布到同样托管在不同AmazonEC2服务器上的基于ColdFusion的Soap Web服务。我可以成功地发布到多个Web服务,但当我尝试发送内容长度大于1448字节的请求时,它失败,出现以下错误: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w

我使用SavonGem将数据从托管在AmazonEC2服务器上的RubyonRails应用程序发布到同样托管在不同AmazonEC2服务器上的基于ColdFusion的Soap Web服务。我可以成功地发布到多个Web服务,但当我尝试发送内容长度大于1448字节的请求时,它失败,出现以下错误:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <soapenv:Fault>
      <faultcode>soapenv:Server.userException</faultcode>
      <faultstring>org.xml.sax.SAXParseException: Premature end of file.</faultstring>
      <detail>
        <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">ip-xx-xx-xx-xx</ns1:hostname>
      </detail>
    </soapenv:Fault>
  </soapenv:Body>
</soapenv:Envelope>

soapenv:Server.userException
org.xml.sax.SAXParseException:文件过早结束。
ip xx xx xx xx
奇怪的是,我可以成功地从我的本地开发机器,甚至从我的另一台Heroku服务器上发布相同的请求,我只是想测试一下

我已经处理了我发送的数据,并确定这肯定是一个整体内容长度问题,与XML中的特定元素无关。我知道XML格式正确,因为我可以从其他服务器发布。它仅在从我的生产EC2服务器发送时导致错误


EC2上是否有某些设置可能导致内容长度超过1448字节的问题?

问题在于发送Amazon EC2服务器上的MTU设置。它被设置为9001,我认为较大的数据包被接收服务器截断,我相信它被设置为1500

一旦我将发送服务器上的设置更改为1500,它就解决了这个问题

这是我读到的帮助提供答案的一页:

此页面包含我用于更改发送服务器上MTU设置的实际命令:

在Linux操作系统上设置MTU

如果客户端在Linux操作系统中运行,则可以使用ip命令查看和设置MTU值

运行以下命令以确定当前MTU值:

$ ip link show eth0
查看输出中mtu后面的值

如果该值不是1500,请运行以下命令进行设置:

$ sudo ip link set dev eth0 mtu 1500

知道问题发生在长度大于1448的内容上,对于发现问题至关重要

CF中有许多节流技术。一个是发布数据的大小限制-虽然1.3k听起来不太多,但可能有人将其设置得很低。第二个是允许的表单帖子总数(默认为100个字段)。不确定这是否被Web服务请求“接受”——我有点怀疑。但这就是CF方面的所有想法。我会寻找URLdefender或其他一些中间嗅探技术,用于检测、延迟或防止DOS攻击。这个特定的数字也提醒了一个可能的错误。也许在某个地方有防火墙或其他东西,只通过第一个数据包?