You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2无法接收传递JWT响应 报Unexpected字符'e'错误的解决方法咨询

WSO2无法处理JWT响应的解析报错解决方法

问题描述

应用从外部端点接收到JWT响应,但WSO2无法接收并传递该响应,抛出如下错误:

Error while building Passthrough stream org.apache.axiom.om.OMException: com.ctc.wstx.exc.WstxUnexpectedCharException: Unexpected character 'e' (code 101) in prolog; expected '<'

已排查axis2配置文件中的message builder和message formatter,配置内容如下:

<messageBuilders>
    <messageBuilder contentType="application/xml"
                    class="org.apache.axis2.builder.ApplicationXMLBuilder"/>
    <messageBuilder contentType="application/x-www-form-urlencoded"
                    class="org.apache.synapse.commons.builders.XFormURLEncodedBuilder"/>
    <messageBuilder contentType="multipart/form-data"
                    class="org.apache.axis2.builder.MultipartFormDataBuilder"/>
    <messageBuilder contentType="application/json"
                    class="org.wso2.micro.integrator.core.json.JsonStreamBuilder"/>
    <messageBuilder contentType="application/json/badgerfish"
                    class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>
    <messageBuilder contentType="text/javascript"
                    class="org.apache.axis2.json.JSONBuilder"/>
    <messageBuilder contentType="text/plain"
                    class="org.apache.axis2.format.PlainTextBuilder"/>
    <messageBuilder contentType="application/octet-stream"
                    class="org.wso2.carbon.relay.BinaryRelayBuilder"/>
    <messageBuilder contentType="application/binary"
                    class="org.apache.axis2.format.BinaryBuilder"/>
</messageBuilders>


<messageFormatters>
    <messageFormatter contentType="application/x-www-form-urlencoded"
                      class="org.apache.synapse.commons.formatters.XFormURLEncodedFormatter"/>
    <messageFormatter contentType="multipart/form-data"
                      class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/>
    <messageFormatter contentType="application/xml"
                      class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
    <messageFormatter contentType="text/xml"
                      class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
    <messageFormatter contentType="application/soap+xml"
                      class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
    <messageFormatter contentType="text/plain"
                      class="org.apache.axis2.format.PlainTextFormatter"/>
    <messageFormatter contentType="application/json"
                      class="org.wso2.micro.integrator.core.json.JsonStreamFormatter"/>
    <messageFormatter contentType="application/json/badgerfish"
                      class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
    <messageFormatter contentType="text/javascript"
                      class="org.apache.axis2.json.JSONMessageFormatter"/>
    <messageFormatter contentType="application/octet-stream"
                      class="org.wso2.carbon.relay.ExpandingMessageFormatter"/>
    <messageFormatter contentType="application/binary"
                      class="org.apache.axis2.format.BinaryFormatter"/>
</messageFormatters>

报错原因

这个错误的核心是:WSO2接收到JWT响应时,没有匹配到对应Content-Type的Message Builder,默认使用XML解析器处理非XML格式的JWT内容,导致解析失败。JWT通常是纯文本格式,或带有application/jwt的Content-Type,而当前配置中缺少对application/jwt类型的处理规则。

解决步骤

  1. 确认响应的Content-Type
    先抓包查看外部端点返回JWT时的Content-Type,常见类型有text/plain、application/jwt,少数情况是包裹在JSON里的application/json。

  2. 添加对应类型的Builder和Formatter
    根据实际的Content-Type,在axis2配置文件中补充配置:

    • 如果是application/jwt类型:
      在<messageBuilders>节点内添加:
      <messageBuilder contentType="application/jwt"
                      class="org.apache.axis2.format.PlainTextBuilder"/>
      
      在<messageFormatters>节点内添加:
      <messageFormatter contentType="application/jwt"
                        class="org.apache.axis2.format.PlainTextFormatter"/>
      
    • 如果是text/plain类型但未生效:
      检查配置中text/plain的builder是否在XML相关builder之前(当前配置已满足),若仍有问题,可尝试调整顺序,让纯文本解析器优先匹配。
    • 如果是JSON包裹的JWT:
      确认当前application/json的builder配置正常(现有配置中的JsonStreamBuilder可处理标准JSON),检查外部端点的响应是否为合法JSON格式。
  3. 重启服务验证
    保存axis2配置文件后,重启WSO2服务,重新测试JWT响应的接收和传递流程。

内容的提问来源于stack exchange,提问作者Sarah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 11:54:54