302来自ajax请求的会话管理响应

时间:2015-03-27 10:07:14

标签: java javascript ajax session websphere-7

我试图通过反复向java代码发出ajax请求来管理用户会话

function sendSessionKeepAliveRequest() {
  $.get('${URL}/sessionKeepAlive?nd=' + new Date().getTime());
}

处理此请求的

和java代码(使用的spring框架):

   

 @RequestMapping("/sessionKeepAlive")
    public String dummySessionKeepAlive(HttpServletResponse response,
      HttpServletRequest request) {
      PrintWriter writer = null;
      try {
        writer = response.getWriter();
      } catch (IOException e) {
        logger.error(e.getMessage());
      }

      if (writer != null) {
        response.setContentType("application/json");

        // Sending an empty JSON response.
        Gson gson = new Gson();
        writer.write(gson.toJson(""));
      }
      return null;

    }

现在问题是有时会发现 302找到而不是 200 OK ,这会让 jsessionid 更改并且会话超时。我已经在IE和FF上测试过并且两个浏览器都有相同的行为。

代码部署在IBM websphere v7.0

请帮忙或任何指示。如果需要更多输入或我需要修改我的问题,请随意。

亲切的问候

2 个答案:

答案 0 :(得分:0)

您遇到了所谓的重定向:您请求的资源的网址已更改。新网址在http标题'位置'。

中提供

您可以使用此网址读出此位置并发出另一个请求,也可以设置响应处理代码以自动遵循重定向。

示例代码:

function sendSessionKeepAliveRequest() {
    $.ajax(
          url:          '${URL}/sessionKeepAlive?nd=' + new Date().getTime()
        , statusCode:   {
                            302: function ( jqXHR, textStatus, errorThrown ) {
                                    var url_trg = jqXHR.getResponseHeader('Location');
                                    $.get(url_trg);
                                 }
                        }
    });

<强> 更新

jquery ajax请求应自动处理302状态代码,因此可能存在其他一些问题。它可能是一个跨域问题吗?

答案 1 :(得分:-1)

如果目的仅仅是活动会话,那么不需要使用GSON就可以传递空字符串并添加一个注释

<强> @ResposeBody

这将帮助您获得ajax响应。