我们有一个访问REST API的GWT应用程序。 REST API也适用于其他用途,并使用JAAS基本授权进行保护。 GWT应用程序使用RestyGWT调度程序和过滤器,如here所示,将授权:基本添加到标题中,到目前为止,这样可以正常工作。
但是,我们的应用程序还允许用户使用文件,下载生成的文件(如pdf报告)或上传/下载任何类型的文件。我们在服务器端使用servlet上传和下载这些文件,并Window.open()
调用以在GWT中接收它们。没有JAAS,这很好用。
现在我也试图保护API的那部分。 Window.open(...)
无效,因为它不允许添加标头。
是否有某种解决方法?
我已经尝试了RequestBuilder,并且收到了包含所请求文件的正确响应。但是,我无法启动该文件的下载。是否可以将此(AJAX)响应编码为data:... URL并使用例如iframe显示它,然后iframe将启动文件下载?
答案 0 :(得分:1)
我总是通过制作常规链接来处理下载。是否可以检查用户会话是否有效,然后才传递文件?
顺便说一句,你可以获得一个打开的窗口文档并填充它:
public static native Document open(String url, String name, String features)/*-{
return $wnd.open(url, name, features).document;
}-*/;