我想在外部浏览器中使用该 URL 的新 session 和 cookie 打开一个 URL。每次打开 URL 时,都将在带有新 cookie 的新浏览器中打开。
我的问题是,每当我尝试在新浏览器中打开 URL 时,旧 session 就会过期,并且旧浏览器窗口不再有用。 URL参数每次都会不同。我尝试过使用 SWT 的内部浏览器和外部浏览器。
尝试Browser.setCookies(value,url);
还是不行。
对于外部浏览器:
public void openUrl(String url){
IWebBrowser browser = PlatformUI.getWorkbench()
.getBrowserSupport()
.createBrowser(IWorkbenchBrowserSupport.AS_EXTERNAL, browserId, name, tooltip);
browser.openUrl(url);
}
对于内部浏览器:
public void launchUrl(String url){
Browser browser = (Browser) getBrowserShellNew().getData(BROWSER); // Browser is a static String "BROWSER"
browser.setUrl(url);
}
private Shell getBrowserShellNew(){
Display display=PlatformUI.getWorkbench().getDisplay();
Shell shell = new Shell(display);
shell.setText("title");
Rectangle screenBounds = null;
if (display.getMonitors().length > 1) {
screenBounds = display.getMonitors()[1].getBounds();
} else {
screenBounds = display.getMonitors()[0].getBounds();
}
shell.setBounds(screenBounds);
shell.setLayout(new FillLayout());
shell.setMaximized(true);
Browser browser = new Browser(shell, SWT.NONE);
browser.setMenu(new Menu(browser));
shell.setData(BROWSER, browser);
shell.open();
shell.forceActive();
shell.forceFocus();
return shell;
}
原因一定是,所有浏览器实例都使用 session 中的相同 cookie。需要以某种方式为每个 URL 启动创建一个带有 cookie 的新 session 。使用外部浏览器。
最佳答案
我认为你有三个选择:
1) Browser.clearSessions()
2) OS.InternetSetOption(0, OS.INTERNET_OPTION_END_BROWSER_SESSION, 0, 0);
3) 如果您使用的是 Windows 计算机或其他操作系统中的相应文件夹,请删除 %AppData%\Roaming\Microsoft\Windows\Cookies
的内容...
祝你好运...
关于java - 使用 SWT 在新浏览器中使用新 session 和 cookie 打开 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56116942/