如何更改HttpServletRequest的用户代理?

时间:2016-05-13 18:18:06

标签: java servlets http-headers internet-explorer-11

我的应用程序正在使用HttpServletRequest发送Web服务请求。当我在ie11中运行我们的应用程序的请求时,我没有返回任何结果,但是当我从Firefox运行它时,我得到了结果。这就是aRequest.getHeader(“User-Agent”)当前值

Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 6.1; WOW64; Trident / 7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8)

我需要将其更改为ie11 compatibilitybilty。它看起来像请求中的用户代理是ie7.0问题是我没有看到'setHeader'的任何选项。我只看到aRequest.setAttribute的选项我试过设置属性但是没有用

 public final ActionForward execute(final ActionMapping aMapping,
                             final ClientForm aForm,
                             final HttpServletRequest aRequest,
                             final HttpServletResponse aResponse)
                  throws ServletException
{
    try {

        final ServletOutputStream out = aResponse.getOutputStream(); 
        aResponse.setContentType("text/html");
        processAjaxRequest(aMapping, aForm, aRequest, aResponse, out);
         out.flush();
        out.close();
    }

 public void processAjaxRequest(final ActionMapping aMapping,
                                 final ClientForm aForm,
                                 final HttpServletRequest aRequest,
                                 final HttpServletResponse aResponse,
                                 final ServletOutputStream out)
                      throws ServletException, IOException
    {

            String response = null;
            boolean isValid = false;

            if (isValid(aRequest, aForm)) { 
                response = "success";
                isValid = true;
            } else {
                response = "fail";
                isValid = false;
            }
            if (WebUtils.getParameter(aRequest, "format", "html").equals("json")) {
                //Map<String,String> map = new HashMap<String,String>(1);
                Map map = new HashMap(1);
                map.put("status", isValid ? "ok" : "fail");
                aResponse.setHeader("X-JSON", JSON.encode(map));
            } else {
                out.print(response);
            }        
    }

1 个答案:

答案 0 :(得分:0)

  

我的应用程序正在使用HttpServletRequest发送Web服务   请求。

您的申请是网络服务。 Webservice不发送请求,它接收来自客户端的请求。

HttpServletRequest是来自您的客户端的请求(在您的情况下是浏览器)。你不应该改变它,因为你只是把它改为只读#34;输入要处理的数据。

浏览器出于某些历史原因(more details here)发送此类用户代理。但是&#34;兼容; MSIE 7.0;&#34;用户代理请求与ie11的问题没有任何共同之处。

你应该调查更深层次的原因,为什么ie11不起作用。在浏览器中查看控制台(任何错误?)或调试服务代码。

我明白了,你写了回复&#34; out.print(回应);&#34;仅在&#34;否则&#34;你的病情,可能是一个原因。因此,如果条件为真,则您的代码不会发送正文(仅限&#34; X-JSON&#34;标题)。