我正在使用WebRequest从Web检索html页面,然后使用Response.Write显示它。
结果页面看起来与原始页面大不相同,主要是字体和布局。
可能的原因是什么以及如何解决?
答案 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,因为它们存在相对路径,正如另一个答案所建议的那样。