window.open(...)授权

时间:2014-10-22 20:30:00

标签: java ajax gwt

我们有一个访问REST API的GWT应用程序。 REST API也适用于其他用途,并使用JAAS基本授权进行保护。 GWT应用程序使用RestyGWT调度程序和过滤器,如here所示,将授权:基本添加到标题中,到目前为止,这样可以正常工作。

但是,我们的应用程序还允许用户使用文件,下载生成的文件(如pdf报告)或上传/下载任何类型的文件。我们在服务器端使用servlet上传和下载这些文件,并Window.open()调用以在GWT中接收它们。没有JAAS,这很好用。 现在我也试图保护API的那部分。 Window.open(...)无效,因为它不允许添加标头。

是否有某种解决方法?

我已经尝试了RequestBuilder,并且收到了包含所请求文件的正确响应。但是,我无法启动该文件的下载。是否可以将此(AJAX)响应编码为data:... URL并使用例如iframe显示它,然后iframe将启动文件下载?

1 个答案:

答案 0 :(得分:1)

我总是通过制作常规链接来处理下载。是否可以检查用户会话是否有效,然后才传递文件?

顺便说一句,你可以获得一个打开的窗口文档并填充它:

public static native Document open(String url, String name, String features)/*-{
    return $wnd.open(url, name, features).document;
}-*/;