2016-01-13 29 views
1

我正在開發類似banatag的服務。在新功能developmnet期間,我發現無法解釋的Gmail行爲(如我所想)。Gmail如何製作它?

我會盡力解釋我的問題在圖片:

  1. 創建標籤(圖像,我會要求)。現在沒有人要求它

  2. 將其添加到URL到電子郵件。圖像http://eggplant-tag.appspot.com/request?FT1R3WECWNTM2ZGUDXRMA8VOXJ4F6TI4

  3. 的網址有來自頁,兩個新的AJAX請求,但不會有我的域名

  4. 尋找我的服務。有要求從我的IP,與谷歌的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' 

[UPD 2]

我用wireshark找到了我的服務請求,但沒有任何。這就是爲什麼主要問題是Google用戶內容如何模擬我的IP地址?

+0

我不明白這是如何與appengine(或針對該問題的編程)相關的,除了這是您託管頁面的事實。如果您想知道Google內容代理的工作原理,建議您向Google諮詢。 – konqi

+1

是的,它與應用引擎直接無關,但我添加了這個標籤,因爲我認爲Google Image Proxy(GIP)和App Engine協同工作的可能性很小(在從GIP到App Engine的情況下)我看到它的副作用。關於編程,我認爲它在附近,因爲它可能是瀏覽器請求的特徵,或者在我的網絡通信知識中失敗。 – fryday

+1

那麼有一堆瀏覽器功能可能會導致這種情況。一種是即使在您實際訪問網站之前緩存內容的Chrome的預加載。第二種是標準功能,瀏覽器向服務器發送OPTIONS請求以確定服務器的功能(但對於簡單的GET請求,這不應發生)。我認爲這是用戶內容代理,儘管...我不知道這是如何工作的。 – konqi

回答

0

我在筆記本上部署了我的應用程序,然後嘗試重複我的操作。

結果證實了我的猜測,即Google代理和App Engine協同工作,當Google代理服務器請求我的應用時,我看到了我的IP。

在我的實驗中,我看到了Google代理的IP。

7

Google Image Proxy的工作原理已在網上進行了全面分析,例如,在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使用的cache/cdn(除其他之外)。

Google App Engine的唯一相關性可能是您如何配置您的app.yaml,而您並未向我們展示該圖像,即該圖像是作爲靜態文件提供的,還是通過應用程序代碼中的邏輯 - 如果是後者,您的代碼是否在服務映像時有任何日誌記錄調用。從你顯示的有限數據中,我猜測前者(所以文件依靠Google的靜態文件服務器,而不是你自己的應用程序代碼旁邊的文件服務器),這將消除任何神祕...

+0

app.yaml在這種情況下不起作用。我加入了處理圖像請求的代碼部分。 問題是爲什麼我在請求中看到我的IP,但Chrome中的開發人員控制檯中沒有任何請求。 – fryday

+0

@Alex我需要你的幫助關於這個gae + django問題http://stackoverflow.com/questions/35086550/appregistrynotready-apps-arent-loaded-yet-django –