【发布时间】:2014-06-06 08:55:13
【问题描述】:
我们的 Mule 应用程序对服务进行出站 https 调用。我们仅在某些请求下得到以下错误,
“您的浏览器发送了一个此服务器无法理解的请求。请求标头字段的大小超出服务器限制”
从错误消息看来,我们更多的是在标头中发送更多数据。
我搜索了该问题并找到了一个相关帖子,其中说要在出站呼叫之前删除 MULE_SESSION 标头。下面是链接,SO上也有类似的帖子,
http://forum.mulesoft.org/mulesoft/topics/how_to_remove_the_mule_session_header_from_a_http_request
我尝试使用消息转换器删除标题,但它不适合我,
<message-properties-transformer doc:name="HTTPMuleSessionStripper">
<delete-message-property key="#[header:outbound:MULE_SESSION]" />
<delete-message-property key="MULE_SESSION" />
</message-properties-transformer>
另外,当我尝试帖子中提到的其他方式时,即指定 Null 会话连接时,它不适用于 https 连接器,或者可能有另一种我不知道的方式。
下面不起作用,
<https:connector name="NoSessionConnector">
<service-overrides sessionHandler="org.mule.session.NullSessionHandler"/>
</https:connector>
有趣的是,我比较了 MULE_SESSION 标头,在它对两条不同的消息进行 Https 出站调用之前,一条有效,一条无效,发现它们的长度相同,所以不确定问题是否与此有关标题。
您能否就该问题提出任何建议?
任何帮助将不胜感激。
【问题讨论】:
-
我怀疑
HTTPMuleSessionStripper是否真的有效。使用org.mule.session.NullSessionHandler是防止会话成为序列化程序的方法。 Mule 可能仍会添加标题,但它将为空。将 Mule 指向您控制的另一个 HTTPS(或 HTTP)端点,并检查您收到的标头的确切状态。