【问题标题】:WSO2 API Manager 1.10 issueWSO2 API 管理器 1.10 问题
【发布时间】:2017-07-13 17:05:49
【问题描述】:

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

【问题讨论】:

    标签: api wso2 wso2-am


    【解决方案1】:

    如果您正在调用 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>
             <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>
    

    【讨论】:

      猜你喜欢
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 2019-10-28
      相关资源
      最近更新 更多