Загрузка документа с внутреннего сервера извне - PullRequest
1 голос
/ 07 октября 2008

Это немного странно .... У нас есть внутреннее веб-приложение, которое работает на сервере (A), и хранилище документов, которое работает на сервере (B).

У меня есть простая ссылка на странице, и я хочу, чтобы пользователь мог загрузить документ (с сервера IIS (A)). Однако этот документ не существует на сервере (A), пока пользователь не нажмет кнопку (поскольку более 40 документов для отображения не могут загрузить их все при загрузке страницы)

Когда пользователь нажимает на ссылку (после чего я хотел бы получить приглашение на загрузку) Документ копируется на сервер (A), а затем перенаправляется на страницу, где браузер предлагает их загрузить. Я считаю, что правильно настроил заголовок контента, и он работает в FireFox.

IE (7) просто выскакивает окно, а затем окно исчезает. Если я выключаю настройки безопасности, он работает нормально, но это не вариант.

Любые идеи, как решить эту проблему. Я не могу указать на документ на сервере (B)

ДОПОЛНЕНИЕ: да Сервер B также является веб-сервером

Ответы [ 2 ]

5 голосов
/ 07 октября 2008

Если мир может видеть сервер A, а сервер A может видеть сервер B. Я бы порекомендовал установить обратный прокси.

http://www.codeplex.com/urlrewriter

По сути, это позволяет миру загружать данные с сервера B, но только через обратный прокси-сервер. Вы можете создать интерфейс обратного прокси с этой библиотекой выше со следующим правилом.

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

Так в случае

http://server -a / скачать / xyz.pdf

на самом деле он запросит у

http://server -b / скачать / xyz.pdf

но он будет доставлен так, как если бы он поступал с сервера-a, технически это происходит с помощью обратного прокси-сервера, создающего веб-соединение с сервера-a на сервер-b и копирующего ответ HTTP на ответ сервера а.

Дайте мне знать, если вам нужна помощь.

0 голосов
/ 07 октября 2008

Можете ли вы использовать AJAX? Например, пользователь нажимает кнопку, отправляющую запрос, чтобы получить файл от B до A, и на странице появляется счетчик. Затем, когда копирование будет завершено, вы отключите счетчик и дадите пользователю ссылку для скачивания.

За меня проголосовали, и у меня нет прав на комментарии, поэтому я подумал, что здесь я бы уточнил (возможно, это просто ужасное решение, и я его не вижу):

  1. Пользователь запрашивает файл, нажав на ссылку
  2. Запрос отправляется на сервер A, и он отключает связь через ajax
  3. Сервер A копирует файл во временный каталог с сервера B
  4. Сервер A отправляет обратно ссылку на файл во временной папке

Это будет работать, если сервер документов не является веб-сервером (SMB, AFS, NFS и т. Д.).

...