我想从我的Vaadin应用程序访问一个带有修改标题的外部网站。
访问外部网站非常简单: 例如:
Link link = new Link("Open", new ExternalResource("externalSite"));
但是如何将标题添加到我的请求中。在我的场景中,我想打开该外部站点,并在标题中添加类似“abc”的密码...例如(它唯一的伪代码!!)
Link link = new Link("Open", new ExternalResource("externalSite"));
link.header("password", "abc");
link.open();
我在Vaadin找到了一个可能的解决方案,但我无法让它运行: https://vaadin.com/forum/#!/thread/8862254/8862912
protected void init(VaadinRequest request) {
// Add a custom request handler
VaadinSession.getCurrent().addRequestHandler(new RequestHandler() {
@Override
public boolean handleRequest(VaadinSession session, VaadinRequest request, VaadinResponse response)
throws IOException {
if ("/redirect".equals(request.getPathInfo())) {
response.setStatus(307); // Temporary Redirect
response.setHeader("Location", "http://1.1.1.1");
response.setHeader("password", "abc");
return true;
}
return false;
}
});
final VerticalLayout layout = new VerticalLayout();
layout.setMargin(true);
setContent(layout);
final Resource redirectResource = new ExternalResource("vaadin://../redirect");
// Redirect to the custom request handler using a link
Link link = new Link("Redirect", redirectResource);
layout.addComponent(link);
}
此外,我尝试使用Javascript来获取带有修改标题的重定向:
String js = "xmlhttp.setRequestHeader(password, \"abc\");"
+ "xmlhttp.open(\"POST\", http://1.1.1.1);";
Page.getCurrent().getJavaScript().execute(js);
但在目标外部网站上没有设置“请求”标题,没有任何效果......任何想法我做错了什么?