spring mvc httpinvoker 报错invalid stream header: 0D0A0D0A 解决办法之一

时间:2025-02-13 08:02:11

最近在弄个项目,需要远程调用接口,用了Spring HttpInvoke,遇到下面问题

: Could not access HTTP invoker remote service at [http://127.0.0.1:8080/NRMP/SyncRemoteService]; nested exception is : invalid stream header: 0D0A0D0A
    at (:212)
    at (:145)
    at (:172)
    at (:202)
    at $(Unknown Source)
    at (:31)
    at .invoke0(Native Method)
    at (:39)
    at (:25)
    at (:597)
    at $(:44)
    at (:15)
    at (:41)
    at (:20)
    at (:28)
    at (:31)
    at .(:73)
    at .(:46)
    at (:180)
    at $000(:41)
    at $(:173)
    at (:28)
    at (:31)
    at (:220)
    at ..(:50)
    at (:38)
    at (:467)
    at (:683)
    at (:390)
    at (:197)
Caused by: : invalid stream header: 0D0A0D0A
    at (:782)
    at .<init>(:279)
    at .<init>(:47)
    at .<init>(:81)
    at (:271)
    at (:239)
    at (:95)
    at (:136)
    at (:192)
    at (:174)
    at (:142)
    ... 28 more

最后弄了两天终于找到原因了。

原来是spring mvc url认证拦截了导致错误的,就是下面这个配置

<!-- Shiro 过滤器 -->
    <bean class="" depends-on="systemFilter">
        <property name="securityManager" ref="securityManager" />
        <property name="loginUrl" value="/login" />
        <property name="successUrl" value="/" />
        <property name="unauthorizedUrl" value="/403" />
        <property name="filters">
            <map>  
                <entry key="systemFilter" value-ref="systemFilter"/>
            </map>
        </property>
        <property name="filterChainDefinitions">
            <value>
                /static/** = anon
                /login = authc
                /machine/** = anon
                /machineSend/** = anon
                /SyncRemoteService = anon
                /** = authc,systemFilter
                /sys/** = user
                /res/** = user
            </value>
        </property>
    </bean>


解决办法 ,将远程调用接口url排除在外就解决问题  加上这么一句    /SyncRemoteService = anon 就可以了