如何在Angular(类型脚本)中从浏览器获取客户端IP地址

Ala*_*ian 6 html user-agent angularjs typescript

嘿,如果您能提供一个示例,其中类型脚本类可以获取客户端ip地址和客户端使用的浏览器并在变量中设置这些值,我将不胜感激。

我想在类型脚本中而不是在Java脚本中做到这一点,如果没有,如何使用类型脚本做到这一点

-例如,我可以1)在将表单提交到后端的数据库时设置这些变量2)i例如可以为用户显示他正在使用的浏览器的任何帮助,谢谢

Jua*_*ska 6

非常感谢您,非常好的解决方案,我将其作为解决问题的基础,但我没有解决它,因为它为我提供了Internet服务器的公共IP。对于具有DHCP的内部网络,请通过以下方式更改URL:

  getIpCliente(): Observable<string> {
      return this.http.get('http://api.ipify.org/?format=jsonp&callback=JSONP_CALLBACK') // ...using post request '
      .map((res:Response) => {console.log('res ', res);
                              console.log('res.json() ', res.text());
                              //console.log('parseado ', JSON.parse(res.text()));
                              console.log('parseado  stringify ', JSON.stringify(res.text()));
                              let ipVar = res.text();
                              let num = ipVar.indexOf(":");
                              let num2 = ipVar.indexOf("\"});");
                              ipVar = ipVar.slice(num+2,num2);
                              console.log('ipVar -- ',ipVar);
                              return ipVar}); // ...and calling .json() on the response to return data
      //.catch((error:any) => Observable.throw(error.json().error || 'Server error')); //...errors if any
  }
Run Code Online (Sandbox Code Playgroud)

希望能为您服务

拥抱!

  • 不要使用内部IP地址 (4认同)

Kur*_*den 5

尝试使用https://geolocation-db.com的服务来获取用户的公共 IP 地址。

import { HttpClient } from "@angular/common/http";
import { catchError, tap } from "rxjs/operators";

this.http.get<any>('https://geolocation-db.com/json/')
  .pipe(
    catchError(err => {
      return throwError(err);
    }),
    tap(response => {
      console.log(response.IPv4);
    })
  )
Run Code Online (Sandbox Code Playgroud)