1

这有点奇怪......我们有一个在服务器 (A) 上运行的内部 Web 应用程序和一个在服务器 (B) 上运行的文档存储库。

我在页面上有简单的链接,我想让用户下载文档(从 IIS 服务器(A))。但是,在用户单击按钮之前,此文档在服务器 (A) 上不存在(因为要显示的 40 多个文档在页面加载时无法全部加载)

当用户单击链接时(此时我希望被提示下载)文档被复制到服务器(A),然后重定向到浏览器提示他们下载的页面。我相信我已经正确设置了内容标题并且它可以在 FireFox 中运行。

IE(7) 只是弹出一个窗口,然后窗口消失,如果我关闭安全设置,它可以正常工作,但这不是一个选项。

任何想法如何解决这个问题。我无法直接指向 Server(B) 上的文档

补充:是的,服务器 B 也是一个 Web 服务器

4

2 回答 2

5

如果世界可以看到服务器 A,服务器 A 可以看到服务器 B。我建议设置反向代理。

http://www.codeplex.com/urlrewriter

基本上,这样做是允许世界从服务器 B 下载,但只能通过反向代理。您可以使用上面的这个库创建一个反向代理接口,规则如下。

RewriteRule ^/download/(.*) http://server-b/download/ $1 [NC,P]

所以在这种情况下

http://server-a/download/xyz.pdf

它实际上会从

http://server-b/download/xyz.pdf

但它会像来自服务器-a一样被传递,这在技术上是通过反向代理创建一个从服务器-a到服务器-b的Web连接并将HTTP响应复制到服务器-a的响应而发生的。

如果您需要任何帮助,请告诉我。

于 2008-10-07T11:19:39.890 回答
0

可以用ajax吗?例如,用户单击发送请求以将文件从 B 获取到 A 的按钮,页面上会显示一个微调器。然后在复制完成后,禁用微调器并为用户提供下载链接。

我被否决并且没有评论权限,所以我想我会在这里详细说明(也许这只是一个糟糕的解决方案,我看不到它):

  1. 用户通过单击链接请求文件
  2. 请求被发送到服务器 A 并通过 ajax 禁用链接
  3. 服务器 A 将文件从服务器 B 复制到临时目录
  4. 服务器 A 发回临时文件夹中文件的链接

如果文档服务器不是网络服务器(SMB、AFS、NFS 等),这将起作用。

于 2008-10-07T11:16:45.823 回答