2012-10-28 70 views
4

我在Google Appengine上託管了我的Web應用程序。有時我需要知道訪問者的位置。所以,我一直在使用谷歌提供的請求頭:Appengine位置標題在什麼基礎上指示位置?

 String visitorCountry = request.getHeader("X-AppEngine-Country"); 
     String visitorRegion = request.getHeader("X-AppEngine-Region");  
     String visitorCity = request.getHeader("X-AppEngine-City"); 
     String visitorLatLong = request.getHeader("X-AppEngine-CityLatLong"); 

他們從來沒有準確的位置,我想它告訴我的ISP的位置。 Google Appengine的請求標頭的工作原理是什麼?它主要在客戶端發送的IP地址上嗎?

以下是供參考的header docs

+0

https://developers.google.com/appengine/docs/python/runtime#Request_Headers。我認爲這將很難精確定位,因爲ISP控制着IP指向的位置。很好的問題。 – jmort253

+1

@ jmort253其實我想知道這與_HTML5 goelocation_功能 –

回答

1

根據我的經驗,使用HTML5地理定位功能往往比基於IP的定位檢測更準確。當您在支持GPS的設備上使用移動網站時,以及您是否啓用了高精度,這一點尤其如此。

退房這個職位也對兩種方法商量好了:Why HTML5 Geolocation?

+0

有什麼不同,但問題是_Allngine位置標題告訴位置的基礎是什麼?_ –

+2

文檔中提到「App Engine確定客戶端的國家代碼等IP地址」。由於jmort253提到了ISP控制IP指向的位置。 – Romin

2

人們可以去這裏 - http://mylocationtest.appspot.com/ - 看看他們是什麼位置的信息出現。

對我來說,緯度/經度只是所列城市的名義中心 - 離我的實際位置約20公里。 ISP是羅傑斯加拿大公司。

顯然,有時國家會回來'ZZ'。 http://code.google.com/p/googleappengine/issues/detail?id=5296

該IP地址信息通常與ASN打包在一起。這告訴你ISP,並且像上面提到的那樣,只有他們可以說出他們的IP被分配到哪裏。也許位置信息的準確性取決於ISP。

(這不是問題的答案 - 只是進一步的討論 - 但它並沒有真正在評論中工作)。