【问题标题】:My response.sendRedirect isn't working我的 response.sendRedirect 不起作用
【发布时间】:2013-09-04 15:28:02
【问题描述】:

我有一个 SmartGWT 应用程序,其中有一个过滤器,我试图(在登录时)确定是否应转发请求(例如从桌面到移动设备)。代码执行,浏览器发出 get 请求,但没有得到响应,也没有进行重定向。我试过http://google.com,但也没有用,所以它一定是别的东西。

public void doFilter(ServletRequest req, ServletResponse res,
        FilterChain chain) throws ServletException, IOException {

    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;
    HttpSession session = request.getSession();

    WURFLHolder wurfl = (WURFLHolder) getFilterConfig().getServletContext().getAttribute(WURFLHolder.class.getName());

    WURFLManager manager = wurfl.getWURFLManager();

    Device device = manager.getDeviceForRequest(request);

    boolean webBrowser = isWebBrowser(device);

    String path = ((HttpServletRequest) request).getRequestURI();

    boolean isBrowserOnMobile = true; // webBrowser && path.contains(MOBILE_REQ_PATH);

    boolean isMobileOnDesktop = !webBrowser && path.contains(DESKTOP_REQ_PATH);

    if (isBrowserOnMobile || isMobileOnDesktop) {
        if (isBrowserOnMobile) {
            path = "http://www.google.com";
        } else {
            path = "/PregledPredmeta/MobileAppEntryPoint.html";
        }
        response.encodeRedirectURL(path);
        response.sendRedirect(path);
        return;

......

【问题讨论】:

  • 你在调用这个方法之前打印了一些东西吗?如果没有,你会得到错误吗?

标签: java filter smartgwt forwarding


【解决方案1】:

在使用response.sendRedirect() 之前,您是否向 HTTP 响应发送了任何内容?要使用 HTTP Redirect HEADER,您不能向浏览器发送任何响应。即使是空格或换行符/换行符也可以停止重定向。

如果您检查了所有代码并确保没有向浏览器发送任何内容,则可以使用 JavaScript 重定向 <script>location.href='yoururl';</script>。这不是一个很酷的解决方案,但它确实有效。

【讨论】:

  • 你是对的,我确实检查了过滤器代码,但没有想到它不是第一个被调用的东西。
猜你喜欢
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2015-07-15
  • 2020-09-14
  • 1970-01-01
相关资源
最近更新 更多