Я использовал следующий код для определения IP-адреса локальной сети клиента, на котором запущено какое-то проприетарное программное обеспечение (пожалуйста, не «вы не должны этого делать», я не писал код).
function ip_local()
{
var ip = false;
window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || false;
if (window.RTCPeerConnection)
{
ip = [];
var pc = new RTCPeerConnection({iceServers:[]}), noop = function(){};
pc.createDataChannel('');
pc.createOffer(pc.setLocalDescription.bind(pc), noop);
pc.onicecandidate = function(event)
{
if (event && event.candidate && event.candidate.candidate)
{
var s = event.candidate.candidate.split('\n');
ip.push(s[0].split(' ')[4]);
}
}
}
return ip;
}
ip_local();
То есть из другого поста StackOverflow, код работал нормально полтора года до сегодняшнего дня.
Где мой локальный ip, кажется, обнаружен как 153b3a68-e3fb-4451-9717-d9b3bc2b5c60.local вместо обычного 192.168.0.11.
Edit:
Если кому-то все равно, эта проблема НЕ может быть обойдена и должна быть решена с помощью языка на стороне сервера, в моем случае я использовал PHP как временную «оплошность» над этой проблемой.
Это проблема для моего приложения, так как оно определяет, запущен ли локальный сервер на хосте .. Что он не может сделать, если не может определить IP-адрес локальной сети.