0

我正在尝试使用 Google App Engine 的 urlFetch 服务获取 URL 并实现代理站点。像 Twitter 和 Facebook 这样的网站看起来像缺少样式表一样毁容,甚至 Google 也缺少 Google 徽标,但 Yahoo 可以正常打开,我不明白为什么。

4

1 回答 1

1

当您使用 urlfetch 时,它会获取页面的 HTML,而不是图像、CSS、JavaScript 或任何其他资源。

雅虎看起来不错,大概是因为他们使用绝对 URL(例如http://www.yahoo.com/image.png)指定他们的图像和 CSS,所以当您的 urlfetch 页面显示时,它包含来自 yahoo.com 的完整图像 URL . 请记住,当某人无权访问 yahoo.com 时,这些图像也不会出现在您的代理页面上。

编辑:看起来雅虎将他们的 CSS 内联到 HTML 页面本身,这可以解释为什么它在您获取的副本中有效。

Google 出现时没有 CSS/图像,因为它们的 CSS/图像被指定为相对 URL(例如,/image.png),并且您的代理在 /image.png 中没有图像

您必须解析 urlfetch 的页面内容以查找需要获取和代理的图像和 CSS。请务必处理像 /resource.png 这样的相对 URL 以及像 www.foo.com/resource.png 这样的绝对 URL。

于 2010-03-31T17:51:33.497 回答