WebRequest 检索到的站点加载与原始站点加载不同

发布于 2024-08-03 08:41:54 字数 122 浏览 10 评论 0原文

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

生成的页面看起来与原始页面主要在字体和布局上有所不同。

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

I am using WebRequest to retrieve a html page from the web and then displaying it using Response.Write.

The resulting page looks different from the original mostly in font and layout.

What could be the possible reasons and how to fix it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

青丝拂面 2024-08-10 08:41:54

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

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

Most probably, the HTML you retrieve contains relative URLs for loading images, stylesheets, scripts. These URLs are not correct for the page as you serve it from your site. You can fix this by converting all of the relative URLs into absolute URLs or by including a BASE tag in the head of the HTML, pointing to the URL of the original page.

Be advised though that deeplinking to images and other resources is considered bad practice. The source site may not like what you are doing.

摘星┃星的人 2024-08-10 08:41:54

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

The reason might be that the original html page contains relative (to the original site) paths to the stylesheet files so when you render the html in your site it cannot find the css.

请叫√我孤独 2024-08-10 08:41:54

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

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

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

您可以通过更改 HTML 以使用绝对链接来解决此问题(即: http://www. server.com/javascript/script.js)。这比听起来更复杂:您需要捕获

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

Does the remote web site include CSS, JavaScript, or images?

If so, are any of the above resources referenced with relative links (i.e.: /javascript/script.js)?

If so, when the browser receives the HTML from your server, the relative links (which were originally relative to the source server) are now relative to your server.

You can fix this by either changing the HTML to use absolute links (i.e.: http://www.server.com/javascript/script.js). This is more complicated than it sounds: you'll need to catch <link href="..."/>, <a href="..."/>, <form action="..."/>, <script src="..."/>, <img src="..."/>, etc.

A more limited solution would be to place the actual resources onto your server in the same structure as they exist on the original server.

絕版丫頭 2024-08-10 08:41:54

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

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

The remote site might look at the User-Agent and serve different content based on that.

Also, you should compare the HTML you can retrieve from the remote site, with the HTML you get by visiting the site in a browser. If they are not different, you are probably missing images and/or css and javascript, because of relative paths, as already suggested in another answer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文