【问题标题】:showing internet content on an intranet site在 Intranet 站点上显示 Internet 内容
【发布时间】:2011-02-23 08:54:47
【问题描述】:

我有一个托管在局域网内的 ASP.NET 应用程序。应用程序主机可以访问互联网,而局域网客户端则不能。

有一个要求,我必须在来自 Internet(公共网络)地址的 IFrame 中显示具有丰富内容(图像)的网页。

但是,由于客户端无法访问 Internet,因此必须以某种方式从服务器完成此操作,然后再将其提供给客户端。

如何做到这一点?

【问题讨论】:

  • 如果他们没有网络连接,他们将如何浏览您的网站?如果服务器没有网络连接,那将如何为您的网站提供服务?
  • 网络连接是指访问公共网络或互联网。

标签: asp.net


【解决方案1】:

您可以使用应用程序代码中的HttpWebRequestHttpWebResponse 来查询另一个服务器,然后您可以通过将其输出到Response 来重新提供它的响​​应。要复制实际的网页,您还必须解析所有嵌入式资源(脚本、图像等)并再次从主机服务器请求它们,并创建一个体系结构,以便它们可以从您的应用程序中重新流式传输。也就是说,如果您只是反刍页面请求的响应,则不会加载任何资源,因为客户端无权访问。您需要将页面中的这些 URL 重新写入服务器上的某个内容,然后从真实服务器重新请求它们。对我来说听起来很痛苦,但在技术上是可行的。

我认为创建某种代理以允许您的客户直接通过您的门户访问该站点要容易得多。 (我上面提出的基本上是一个专门的代理)。如果您可以直接使用 IIS,您可以为此目的创建一个更直接的代理。我猜你需要这样做一定有充分的理由,比如,这些是零售店的公共终端,你显然不希望你的客户从那里购物:)

【讨论】:

  • 类似于我所想的一些事情。我在想可能有一些网站下载器,比如免费 api,它可能会帮助我在本地下载页面。编写一个下载器之类的功能真是太痛苦了……而且花费的时间和精力不值得。
  • 我在创建各种代理时得到的结果是,您可以创建一个 ISAPI 处理程序来拦截对站点的所有请求,并有条件地重定向它们。因此,您的代码可以提供一个页面,只需将异地资源替换为 `someurl/originalurl/resource.xxx' - 处理程序将使用 'someurl' 将其标识为代理请求,然后将请求重定向到异地服务器,捕获响应,并将其流式传输到客户端。确定异地网址后就OK了。我确信有一些我没有想到的细节,但基本的实现应该是直截了当的。
猜你喜欢
  • 1970-01-01
  • 2012-03-20
  • 2014-10-22
  • 2013-08-08
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 2013-09-17
  • 1970-01-01
相关资源
最近更新 更多