WSO2 API Manager 1.10问题

时间:2016-05-10 21:04:06

标签: api wso2 wso2-am

我们遇到一个问题,当Content-Length超过1068时,对WSO2 API REST端点的调用失败并显示“412 Precondition Failed”。只需向请求添加空格(将大小增加到1069)会导致此失败。如果API调用足够快(使用SOAPUI进行测试),则当内容长度小于1069时也会发生此问题。我们有一个理论认为标头和主体在数据包之间分开并混淆了请求。我们尝试关闭分块,这并没有影响事情。直接调用后端REST服务时,它可以正常工作。

1 个答案:

答案 0 :(得分:0)

如果要调用SOAP端点,可以使用属性介体关闭如下的分块。但是你必须确保SOAP端点也期望一个非分块的请求。

<property name=”DISABLE_CHUNKING” value=”true” scope=”axis2″/>


但是,如果您使用REST端点上面的属性有时可能无法正常工作。在这种情况下,我们需要确保将 Content-Length 标头附加到请求中。我们可以使用以下两个属性来附加 Content-Length 标题。

<property name="FORCE_HTTP_CONTENT_LENGTH" value="true" scope="axis2"></property>
<property name="COPY_CONTENT_LENGTH_FROM_INCOMING" value="true" scope="axis2"></property>

示例代理inSequence

     <inSequence>
         <log level="custom">
            <property name="msg" value="Executing IN sequence"></property>
         </log>
         <property name="FORCE_HTTP_CONTENT_LENGTH" value="true" scope="axis2"></property>
         <property name="COPY_CONTENT_LENGTH_FROM_INCOMING" value="true" scope="axis2"></property>
         <send>
            <endpoint>
               <address uri="https://www.google.com" format="rest"></address>
            </endpoint>
         </send>
      </inSequence>