2013-07-10 12 views
0

我目前正在NetSuite上運行一個相當複雜的電子商務網站。 NetSuite的核心很大程度上依賴於Javascript,並且我自己實現了大量的自定義Javascript。MaxMind與使用Internet Explorer的GeoIP和政府用戶有關的問題

最近,我使用Maxmind的GeoIP數據庫實現了一些代碼,以確定用戶的位置並根據該位置採取操作。這個想法是阻止某些國家購買物品,將它們重定向到一個國家特定的頁面,並通知他們在他們的國家有一個分銷商。 (我知道這可能不是做事情的最佳方式,但由於各種原因,這些決定不取決於我)。

所以,這就是我正在做的事情。當頁面加載時,它運行的MaxMind腳本來確定用戶的位置,並設置一個cookie,所以我沒有繼續提示自己的位置:

var geoCheck = (function() { 

    var location = getCookie("country"); 

    var onSuccess = function (geoipResponse) { 
     country_code = geoipResponse.country.iso_code; 

     if (!geoipResponse.country.iso_code) { 
      country_code = "US"; 
     } 
     setCookie("country",country_code,365); 

     return; 
    }; 

    var onError = function (error) { 
     country_code = "US"; 
    }; 

    if (location != null && location != "") { 
     return function() { 
      country_code = location; 
     } 
    } else { 
     return function() { 
      geoip2.country(onSuccess, onError); 
     }; 
    } 
}()); 

然後,當用戶點擊「加入購物車「按鈕,該功能獲取運行,以確定用戶是從我們限制的國家之一瀏覽:

function countryCheck() { 
    if (country_code) { 
     switch (country_code) { 
      case 'CN': 
       /*redirect stuff*/ 
       return false; 
      case 'TW': 
       /*redirect stuff*/ 
       return false; 
      /*...and so on for about 6 countries total...*/ 
     } 
     return true; 
    } else { 
     return true; 
    } 
    return true; 
} 

問題:因爲我實現了這個代碼,客戶端一貫地使用派遣由政府用戶的呼叫Internet Explorer稱他們無法將商品添加到購物車中。我以前一直在使用GeoLite數據庫,之前從未遇到過這些問題。直到我實現了上面的代碼。

我知道這是一個很長的涉及線程,但是這個讓我難住,所以提供的任何幫助都將非常感謝。

  1. 政府電腦攔截JavaScript:我只能想出這不工作的情況下幾乎可以立即根據先前的執行情況和其他因素來揭穿?
    • 因爲:它應該與GeoLite解決方案一起工作,甚至在此之前,因爲它已經嚴重依賴Javascript來實現核心功能,並且不提供很多(如果有的話)後備。
  2. 政府電腦阻止cookies?
    • 因爲:代碼並不真正依靠cookie來工作。它只是作爲一種便利設置,所以我不必一直提示用戶他們的位置
  3. 政府計算機阻止W3C地理定位?(新版本的GeoIP的新功能):
    • 因爲:如果W3C位置失敗,它應該在Maxmind數據庫上回退,該數據庫在我以前的(工作)解決方案中再次使用。

同樣,我知道這是一個長期的線程,但沒有任何人有任何事物光明的想法來試試呢?任何幫助提供將非常感激。謝謝!

+0

任何想法這些用戶正在使用哪個版本的Internet Explorer? –

+0

使用javascript在客戶端網站中執行重定向或過濾是不安全的。代碼是可見的,因此很容易被覆蓋。爲此,建議使用PHP等服務器端腳本。 –

+0

@oschwald:不幸的是,沒有。我沒有能夠直接與有問題的人交談。即使我可以,這些人也沒有意識到他們禁用Javascript,所以要求他們找出他們使用的是哪種版本的Explorer,對他們來說可能會有點不同。 – B1gJ4k3

回答

0

呃......好吧,我明白了這一點。像往常一樣,我讓它變得比它需要的更復雜。你看,我已經跑,我已經離開了一個錯誤的另一個腳本:

console.log(); 

其中作爲誰曾經試圖使用此命令早期版本的IE將認識的人,會導致IE去apeshit和休息幾乎一切......

使用this thread,我說:

if (!window.console) console = {log: function() {}}; 

到腳本的頂部,一切工作正常。

永遠讓你永遠,Internet Explorer ...