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
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