Gmail如何制作它?

fry*_*day 2 python ajax gmail google-app-engine google-chrome

我正在开发类似banatag的服务.在新功能开发期间,我发现了无法解释的Gmail行为(我认为).

我会试着用图片解释我的问题:

  1. 创建标签(我将要求的图像).现在没有人要求它

  2. 通过URL将其添加到电子邮件中.图片网址http://eggplant-tag.appspot.com/request?FT1R3WECWNTM2ZGUDXRMA8VOXJ4F6TI4

  3. 页面有两个新的AJAX请求,但是我的域名没有

  4. 寻找我的服务.我的IP请求Google User-Agent

请求此图片(标签)是什么?我看到两种可能性:

  • 页面向我的服务发出AJAX请求,这就是我看到我的IP的原因.但在这种情况下,为什么我在Developer Console的Network选项卡中看不到此请求?

  • Google Image Proxy服务请求我的服务,但为什么在这种情况下我的IP请求?

我的IP:

[UPD] 添加处理图像(标记)请求的类的一部分:

...
request.remoteAddress = str(self.request.remote_addr)# save remote address
request.put()
...
self.response.write(simpleImageData) #write to body binary data of 1x1 transparent image
self.response.headers[ 'Content-Type' ] = 'image/png'
self.response.headers[ 'Cache-Control' ] = 'no-cache, no-store, must-revalidate'
self.response.headers[ 'Pragma' ] = 'no-cache'
self.response.headers[ 'Expires' ] = '0'
Run Code Online (Sandbox Code Playgroud)

[UPD 2]

我使用wireshark向我的服务发现了请求,但没有.这就是为什么主要问题是Google用户内容如何模拟我的IP地址?

Ale*_*lli 8

Google图像代理的工作方式已在网上进行了全面分析,例如https://litmus.com/blog/gmail-adds-image-caching-what-you-need-to-knowhttps:// blog. filippo.io/how-the-new-gmail-image-proxy-works-and-what-this-means-for-you/ - googleusercontent站点是GIP使用的缓存/ cdn(以及其他内容).

Google App Engine的唯一相关性可能就是您如何配置您app.yaml未向我们展示的内容,即,该图像是作为静态文件提供的,还是通过应用程序代码中的逻辑 - 如果是后者,那么您的代码在为图像提供服务时会有任何日志记录调用.根据您显示的有限数据,我猜测前者(因此文件存在,并由Google的静态文件服务器提供,而不是在您自己的实例上的应用程序代码旁边),这将消除任何谜......