Undertow (Wildfly8) 不处理请求参数



我从Jboss AS7/EAP6迁移到Wildfly8,我想在这里询问关于underflow的任何提示,为什么它不像catalina在EAP6中那样处理请求参数。

所以,我从客户端打电话到url/client/boom/index.htm?i=1',则会出现一个错误servlet,我想在其中获取参数i:的值

httpServletRequest.getParameter("i");

EAP6返回1,而Wildfly8返回null。为什么?

调用链如下(假设基本身份验证):

  1. 用js调用url/client/boom/index.htm?i=1'
  2. 流未到达UsernamePasswordLoginModule的子类,因为需要授权
  3. 流到达带有的错误servlet

httpServlet请求.getAttribute("javax.servlet.error.status_code")==401httpServlet请求.getAttribute("javax.servlet.error.message")==未经授权的

在这里,在错误servlet中,我需要获取参数I。

其他信息。

错误servlet是这样映射的:

<servlet-mapping>
    <servlet-name>error</servlet-name>
    <url-pattern>*.error</url-pattern>
</servlet-mapping>
...
<error-page>
    <error-code>401</error-code>
    <location>/Error.error</location>
</error-page>

我在jboss-web.xml 中声明了一个名为"boom"的安全域

<jboss-web>
    <security-domain>boom</security-domain>
    <disable-audit>true</disable-audit>
</jboss-web>

以及在standalone.xml 中

<subsystem xmlns="urn:jboss:domain:security:1.2">
    <security-domains>
        ...
        <security-domain name="boom" cache-type="default">
            <authentication>
                <login-module code="com.boom.security.BoomLoginModule" flag="required"/>
            </authentication>
        </security-domain>
    </security-domains>
</subsystem>

Auth方法在web.xml中声明为基本方法。


更新。错误servlet中的属性列表在EAP6和WF8 中不同

WF8:中的属性

javax.servlet.error.message: Unauthorized
javax.servlet.error.status_code: 401
javax.servlet.error.servlet_name: default
javax.servlet.error.request_uri: /boom-portal/client/boom/index.htm

EAP6:中的属性

javax.servlet.forward.request_uri: /boom-portal/client/boom/index.htm
javax.servlet.forward.context_path: /boom-portal
javax.servlet.forward.servlet_path: /client/boom/index.htm
javax.servlet.forward.path_info: /Error.error
javax.servlet.forward.query_string: i=1
javax.servlet.error.message:
javax.servlet.error.status_code: 401
javax.servlet.error.servlet_name: default
javax.servlet.error.request_uri: /boom-portal/client/boom/index.htm 

也许这个问题与转发的多部分请求可能会丢失提交的表单参数有关

尝试通过添加以下注释来更改servlet的设置@MultipartConfig

或者以这种方式在web.xml描述符中

<servlet>
    <servlet-name>Servlet</servlet-name>
    <servlet-class>.....</servlet-class>
    <load-on-startup>0</load-on-startup>        
    <multipart-config/>
 </servlet>

更新

问题是身份验证,您收到的状态码为401:

401状态代码解释

该请求需要用户身份验证。响应必须包括WWW-Authenticate标头字段包含适用于请求的资源。

看看你是怎么做的。

相关内容

  • 没有找到相关文章

最新更新