Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8294574

HTTP2Loader does not follow 308 Redirect

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: P3 P3
    • tbd
    • jfx11, jfx20, jfx17, jfx18, jfx19
    • javafx
    • web
    • generic
    • generic

      ADDITIONAL SYSTEM INFORMATION :
      Windows 10 Java 17

      A DESCRIPTION OF THE PROBLEM :
      JavaFX WebView does not handle 308 Response Code to follow the permanent redirect.

      Is it just that HTTP2Loader does not handle 308?

      com.sun.webkit.network.HTTP2Loader:

      private boolean handleRedirectionIfNeeded(final HttpResponse.ResponseInfo rsp) {
              switch(rsp.statusCode()) {
                      case 301: // Moved Permanently
                      case 302: // Found
                      case 303: // See Other
                      case 307: // Temporary Redirect
                          willSendRequest(rsp);
                          return true;

                      case 304: // Not Modified
                          didReceiveResponse(rsp);
                          didFinishLoading();
                          return true;
              }
              return false;
          }

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Load load https://webdbg.com/test/308/ in WebView and click the button.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Permanent redirect will be followed.
      ACTUAL -
      Permand redirect ist not being followed.

      ---------- BEGIN SOURCE ----------
      import javafx.application.Application;
      import javafx.stage.Stage;
      import javafx.beans.value.ChangeListener;
      import javafx.beans.value.ObservableValue;
      import javafx.concurrent.Worker;
      import javafx.concurrent.Worker.State;
      import javafx.event.EventHandler;
      import javafx.scene.Scene;
      import javafx.scene.control.ContextMenu;
      import javafx.scene.input.ContextMenuEvent;
      import javafx.scene.layout.Priority;
      import javafx.scene.layout.VBox;
      import javafx.scene.web.PopupFeatures;
      import javafx.scene.web.WebEngine;
      import javafx.scene.web.WebView;
      import javafx.util.Callback;


      public class HelloFX extends Application {

      public static void main(String[] args) {
              launch(args);
          }

          public void start(Stage primaryStage) {
              primaryStage.setTitle("JavaFX WebView Example");

              WebView webView = new WebView();

      webView.getEngine().getLoadWorker().stateProperty().addListener(new ChangeListener<Worker.State>()
              {
                  @Override
                  public void changed(final ObservableValue bObservable, final Worker.State oldValue, final Worker.State newValue)
                  {
                      if (((webView.getEngine() != null) && (webView.getEngine().getLoadWorker().getException() != null)) && (newValue == State.FAILED)) {
                          System.out.println(webView.getEngine().getLoadWorker().getException());
                      }
                  }
      });

      webView.getEngine().load("https://webdbg.com/test/308/");

              VBox vBox = new VBox(webView);
              Scene scene = new Scene(vBox, 960, 600);

              primaryStage.setScene(scene);
              primaryStage.show();

          }

      }
      ---------- END SOURCE ----------

      FREQUENCY : always


        1. Capture1.PNG
          Capture1.PNG
          36 kB
        2. Capture2.PNG
          Capture2.PNG
          73 kB
        3. HelloFX.java
          2 kB

            jbhaskar Jay Bhaskar
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: