WebRequest检索到的网站加载与原始文件不同

时间:2009-09-01 17:43:10

标签: asp.net webrequest

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

结果页面看起来与原始页面大不相同,主要是字体和布局。

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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 =”...“/>等等。

更有限的解决方案是将实际资源放在服务器上,其结构与原始服务器上的相同。

答案 2 :(得分:1)

最有可能的是,您检索的HTML包含用于加载图像,样式表,脚本的相对URL。从您的网站提供该网页时,这些网址不正确。您可以通过将所有相对URL转换为绝对URL或在HTML的头部包含BASE标记来指明原始页面的URL来解决此问题。

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

答案 3 :(得分:1)

远程站点可能会查看User-Agent并根据该内容提供不同的内容。

此外,您应该将可以从远程站点检索的HTML与通过浏览器访问该站点获得的HTML进行比较。如果它们没有什么不同,你可能会丢失图像和/或css和javascript,因为它们存在相对路径,正如另一个答案所建议的那样。