java - 尽管位置具有正确的 url,但未发生重定向

标签 java servlets redirect

我正在使用用 java 编写的上传功能上传一些图像。一旦上传正在进行,就会有一个 gif 来显示进度条。现在,当 session 超时时,我将重定向到登录页面。

    if (StringUtils.isNotBlank(request.getQueryString())) {
        queryString = request.getServletPath() + "?" + request.getQueryString();
    } else {
        queryString = request.getServletPath();
    }

    LOGGER.debug("Query String:" + queryString);
    if (!StringUtils.equalsIgnoreCase(StringUtils.substringAfterLast(queryString, ApplicationConstants.DOT),
                    ApplicationConstants.JSON)) {
        request.getSession().setAttribute(ApplicationConstants.QUERY_STRING, queryString);
    }
    try {
        LOGGER.error("In navigateToLandingPage. Redirecting to Failure View:" + this.getFailureView());
        response.sendRedirect(request.getContextPath() + "/" + this.getFailureView());
       // response.setHeader("Refresh", "5; URL=http://XXXX/login.htm");
    } catch (IOException e) {
        throw new BusinessException("Exception in redirecting", "-1", this.getClass().getCanonicalName(), e);
    }

当我在浏览器中分析网络时,我可以看到带有 302 状态的响应,并且该位置也具有预期的 URL,但有些响应未得到处理并卡在进度条屏幕上。 如果我手动刷新卡住的页面,我会被引导到登录页面,我正在尝试添加 response.setHeader("刷新", "5; URL= http://lXXXXX/login.htm ");在重定向下方但没有运气。 谁能帮我解决这个问题吗?

有一个解决方法,我不发送 302,而是发送 901,我正在检查 js 并定向登录,这工作正常,但我打算使用重定向。

最佳答案

那么,请求是使用 JS 异步触发的,而不是使用 Web 浏览器同步触发的?换句话说,您试图重定向 ajax 请求?

如果您发送重定向作为对 ajax 请求的响应,则 XMLHttpRequest 默认情况下将遵循该重定向。 IE。它将重新发送 ajax 请求到该 URL。这显然不是你的本意。您需要同步重定向,而不是异步重定向。

规范的方法是以某种方式指示 ajax 引擎需要对给定的 URL 执行 window.location 调用。如果您使用 JSON 或 XML 作为数据格式,那么您只需添加一条特殊指令,然后您的 ajax 引擎即可检查该指令。

例如如果是 JSON:

response.getWriter().printf("{redirect:\"%s\"}", url);
var response = fireAjaxRequestAndGetResponseAsJsonSomehow();

if (response.redirect) {
    window.location = response.redirect;
    return;
}

// Usual process continues here.

关于java - 尽管位置具有正确的 url,但未发生重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30889875/

相关文章:

java - 字符串数组空值检查失败

java - 从资源类提供 swagger.json

ruby-on-rails - rails 5 : disable access to Devise register and login form pages

.htaccess - 如何根据 cookie 值进行 htaccess 重定向

java - 如何在MongoDB JAVA中向对象追加数据并在一页上显示其内容?

java - Spring social vs javascript(facebook 身份验证)

java - 在 Java 中删除对象时出现问题

servlets - 在 servlet 过滤器中创建错误页面会导致错误 "Writer already obtained"

Magento 与 Nginx 和 Varnish - 302、cookie 和重定向?

java - 如何在spring配置服务器中动态生成配置属性?