【发布时间】:2011-02-03 01:18:12
【问题描述】:
我正在尝试使用 Google App Engine 的 urlFetch 服务获取 URL 并实现代理站点。像 Twitter 和 Facebook 这样的网站看起来像缺少样式表一样毁容,即使 Google 缺少 Google 徽标,但 Yahoo 却可以正常打开,我不明白为什么。
【问题讨论】:
标签: google-app-engine urlfetch
我正在尝试使用 Google App Engine 的 urlFetch 服务获取 URL 并实现代理站点。像 Twitter 和 Facebook 这样的网站看起来像缺少样式表一样毁容,即使 Google 缺少 Google 徽标,但 Yahoo 却可以正常打开,我不明白为什么。
【问题讨论】:
标签: google-app-engine urlfetch
当您使用 urlfetch 时,它会获取页面的 HTML,而不是图像、CSS、JavaScript 或任何其他资源。
Yahoo 看起来不错,大概是因为它们使用绝对 URL(例如,http://www.yahoo.com/image.png)指定图像和 CSS,因此当您的 urlfetch 页面显示时,它包含来自 yahoo.com 的完整图像 URL。请记住,当某人无权访问 yahoo.com 时,这些图像也不会出现在您的代理页面上。
编辑:看起来 Yahoo 将他们的 CSS 内联到 HTML 页面本身,这可以解释为什么它在您获取的副本中有效。
Google 出现时没有 CSS/图像,因为它们的 CSS/图像被指定为相对 URL(例如,/image.png),而您的代理在 /image.png 中没有图像
您必须解析 urlfetch 的页面内容以查找需要获取和代理的图像和 CSS。请务必处理像 /resource.png 这样的相对 URL 以及像 www.foo.com/resource.png 这样的绝对 URL。
【讨论】: