1

我需要能够在我的网站中打开一个外部 URL,而不向我的用户(在浏览器和源中)显示它。我不希望他们能够复制 URL 并根据自己的喜好编辑查询字符串。有没有办法在 iframe 或类似的东西中打开 URL,并隐藏/屏蔽其来源?

这是一个asp.net 2.0 网站。

4

6 回答 6

3

不可以。如果您让客户端机器做某事(即,将他们的浏览器指向一个网页),您不能向他们隐瞒这些信息。

您可以在 Flash 小部件或其他容器中呈现该页面服务器端,但您不能在客户端计算机上执行此操作。

于 2009-01-27T14:31:39.830 回答
3

你能做到以下几点:

  1. 接受来自用户的参数。
  2. 有一个网页或后端进程使用它来将 PDF 下载到临时商店。
  3. 然后将其流式传输到客户端,因此他们不知道生成 PDF 的 URL?(或直接流式传输,无需临时下载。)

这样用户就永远不会知道其他站点,并且它应该更加安全。

这也可以使用一些验证/身份验证,因此用户无法更改传递的参数以检索其他用户的 PDF。

于 2009-01-27T14:55:31.420 回答
1

最佳选择:您可以发出服务器端 XMLHTTP 请求,获取响应并使用 AJAX 反馈回您的页面。

于 2009-01-27T14:37:00.130 回答
1

您可以通过以下方式在服务器端进行:

  1. 打开到您想要的站点的网络连接
  2. 从 URL 上的 HTML/Get 请求中获取 HTML
  3. 将其插入服务器端的页面

不过,这可能会大大减慢您的页面加载速度,并且可能会伴随法律问题。

于 2009-01-27T14:38:08.617 回答
1

不久前我自己也遇到了类似的问题,并按照这些思路做了一些事情(C# .NET 2.0);

    public void StreamURLContents(string URL)
    {
        WebRequest req = WebRequest.Create(URL);

        using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
        using (Stream dataStream = resp.GetResponseStream())
        using (StreamReader reader = new StreamReader(dataStream))
        {
            string currentLine = reader.ReadLine();
            while (currentLine != null)
            {
                Response.Write(currentLine);
                currentLine = reader.ReadLine();
            }
        }
    }

显然,您必须调整 HTML 的编写以适合您的特定应用程序,并且您会破坏目标站点中的所有相关链接(图像 URL、CSS 链接等),但如果您只追求简单的文本HTML 并希望您的 Web 应用程序在服务器端获取它,那么这是一个不错的方法。

于 2009-01-27T14:58:41.740 回答
0

您可以通过执行以下操作创建一次性 URL:

  1. 将 GUID 存储在数据库中
  2. 允许客户端通过超链接或其他方式请求 GUID。在 URL 中使用 GUID 作为假页面;示例: http: //www.company.com/foo/abc-123-efg-456.aspx
  3. 使用 URL 重写来捕获和检查对目录“foo”的所有请求并重定向到您的处理程序。
  4. 确认 GUID 有效,然后在数据库中将其标记为“过期”
  5. 将适当的数据(PDF?)作为对请求的响应发送给客户端。
  6. 对同一 URL 的任何后续请求都会失败。
于 2009-01-28T06:09:26.193 回答