2015-09-21 51 views
0

我想要在Chrome應用程序中獲取用戶的IP地址。內容安全政策指令使我不能用一個服務,如IPify,或一個Ajax請求,如:在Chrome擴展程序中獲取IP地址

$.ajax({ 
    url: 'https://freegeoip.net/json/', 
    type: 'POST', 
    dataType: 'jsonp', 
    success: function(location) { 
     alert(location.ip); 
    } 
}); 

的錯誤信息是:

拒絕加載腳本「https://freegeoip.net/json/?callback=jQuery21304975464364979416_1442806213407&_=1442806213408」,因爲它違反了以下內容安全策略指令:「default-src'self'blob:filesystem:chrome-extension-resource:」。請注意,'script-src'沒有明確設置,所以'default-src'被用作後備。

感謝,

編輯爲清楚:我正在尋找的IP地址,因爲它是從服務器看到的全球互聯網,而不是本地IP上的。

+0

爲什麼要使用第三方服務?您的應用是否在您的控制下訪問任何Internet服務器? – DanSut

+0

[在Chrome擴展中獲取JSON]的可能重複(http://stackoverflow.com/questions/11842954/get-json-in-a-chrome-extension) – Xan

回答

0

好吧,一種可能的方法是使用Chrome API chrome.system.network.getNetworkInterfaces()。這個例子就像這樣。

chrome.system.network.getNetworkInterfaces(function(interfaces){ 
    console.log(interfaces.address); 
}); 

而在manifest.json文件,你可能需要給像這樣的API的權限。

"permissions": [ 
    "system.network" 
] 
+0

感謝您的想法。我試過了,但我獲得了本地IP地址,即192.168.1.xx。我怎麼能得到我的全球IP地址? –

+0

嗯,不太確定全球IP地址,但..但是,你知道你試圖檢索的地址的網址嗎?如果是的話,我想可以使用'chrome.webRequest'來檢索公共IP –

+0

@CharlesBlouin你應該在Q中澄清一下,你希望你的應用客戶端的IP地址與訪問互聯網(在NAT等之後) - 您在這裏的評論表明這是這種情況,您的示例代碼推斷它,但您不明確地說。 – DanSut

-1

它確實需要Internet權限,但唯一的方法是調用一個返回您的外部IP的Web服務。

我發現這個service在這個answer

+0

的應用感謝您的幫助,但它似乎不起作用。我有互聯網接入(應用程序發送數據),但內容安全政策不允許簡單地接收信息。 –