1

私は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;

……

4

1 に答える 1

2

を使用する前に、HTTP 応答にコンテンツを送信しましたresponse.sendRedirect()か? HTTP Redirect HEADER を使用するには、ブラウザーに応答を送信できません。スペースや改行/改行でもリダイレクトを停止できます。

すべてのコードをチェックし、ブラウザにコンテンツを送信していないことを確認したら、JavaScript リダイレクトを使用できます<script>location.href='yoururl';</script>。クールなソリューションではありませんが、機能します。

于 2013-09-03T19:53:13.557 に答える