0

我正在使用 WebRequest 从 Web 检索 html 页面,然后使用 Response.Write 显示它。

生成的页面看起来与原始页面不同,主要是字体和布局。

可能的原因是什么以及如何解决?

4

4 回答 4

1

原因可能是原始 html 页面包含样式表文件的相对(相对于原始站点)路径,因此当您在站点中呈现 html 时,它无法找到 css。

于 2009-09-01T17:48:30.007 回答
1

远程网站是否包含 CSS、JavaScript 或图像?

如果是这样,上述任何资源是否通过相对链接(即:/javascript/script.js)引用?

如果是这样,当浏览器从您的服务器接收 HTML 时,相对链接(最初是相对于源服务器的)现在是相对于您的服务器的。

您可以通过将 HTML 更改为使用绝对链接(即:http ://www.server.com/javascript/script.js )来解决此问题。这比听起来更复杂:你需要捕捉 <link href="..."/>, <a href="..."/>, <form action="..."/>, <script src="..."/>、<img src="..."/> 等。

一个更有限的解决方案是将实际资源以与原始服务器上存在的结构相同的结构放置到您的服务器上。

于 2009-09-01T17:49:54.810 回答
1

很可能,您检索的 HTML 包含用于加载图像、样式表、脚本的相对 URL。当您从您的站点提供页面时,这些 URL 不适合该页面。您可以通过将所有相对 URL 转换为绝对 URL 或在 HTML 的头部包含一个指向原始页面 URL 的 BASE 标记来解决此问题。

尽管深度链接到图像和其他资源被认为是不好的做法,但请注意。源站点可能不喜欢您正在做的事情。

于 2009-09-01T17:50:37.773 回答
1

远程站点可能会查看用户代理并基于此提供不同的内容。

此外,您应该将可以从远程站点检索到的 HTML 与您在浏览器中访问该站点获得的 HTML 进行比较。如果它们没有不同,则由于相对路径,您可能缺少图像和/或 css 和 javascript,正如另一个答案中已经建议的那样。

于 2009-09-01T17:51:25.417 回答