从gwt中受密码保护的URL创建图像对象

时间:2012-01-02 10:32:42

标签: javascript ajax gwt

我想在GWT应用程序中呈现一些图像。在一般情况下,这些图像存储在密码保护的URL中,在我的站点外部。我可以使用Image(java.lang.String url)构造函数,在url中使用用户名和密码。所以我可以致电:

Image img = new Image("http://user:pass@mydomain.com/image.png")

但是,查看页面源代码的任何人都可以看到用户名和密码。我想与该URL建立经过身份验证的连接,然后在构造函数中使用纯url:

Image img = new Image("http://mydomain.com/image.png")

我不想通过弹出窗口要求用户输入用户名和密码,因为在一般情况下,他将与图像所属的用户和密码不同,因此他将不具有凭据。图片的所有者在注册时会向我提供他们的网址,用户名和密码。

这一切都可能吗?

2 个答案:

答案 0 :(得分:1)

如果您的用户没有查看图像的凭据,那么您将无法从用户的客户端加载它们。没有好的方法可以为他们提供密码而不让他们看到密码。

您可以通过将图像请求发送到您自己的服务器来重构此操作。然后,您自己的服务器可以将请求发送到外部服务器,提供密码,并将响应传递给您的用户。这是一个额外的跳,但你可以保密密码。

如果您要求用户提供其他网站的密码,则需要非常小心。一般来说,这听起来像是一种冒险的尝试 - 你暴露了许多不同的方式来获取对他人的文件的访问权限。您可以创建的越少越好。如果外部站点支持像oauth这样的间接授权方法,那么你肯定更喜欢请求用户密码。

答案 1 :(得分:0)

您需要弹出一个窗口到该域,并让用户填写他们的用户名和密码。对于同一域的所有后续请求,您不应该获得新的弹出窗口。一种方法是,为mydomain.com创建一个隐藏的iframe。这应该会触发auth弹出窗口。