web-dev-qa-db-ja.com

Angular(タイプスクリプト)でブラウザからクライアントIPアドレスを取得する方法

タイプスクリプトクラスがクライアントのIPアドレスとクライアントが使用しているブラウザーを取得し、それらの値を変数に設定できる例を提供していただければ幸いです

Javaスクリプトではなく、タイプスクリプトでこれを実行したいのですが、それができない場合は、タイプスクリプトでそれを行う方法

-たとえば、iの場合、1)バックエンドのデータベースにフォームを送信するときに、これらの変数を設定できます2)たとえば、ヘルプを使用しているブラウザをユーザーに表示できます。

9
Ala'a Mezian

ありがとう、非常に良い解決策私はそれを私の問題の基礎として取り上げましたが、インターネットサーバーのパブリック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
  }

友達にサービスしたいです

抱擁!

4

このようにしてみてください

var json = 'http://ipv4.myexternalip.com/json';
   $http.get(json).then(function(result) {
    console.log(result.data.ip)
},  function(e) {
   alert("error");
});
3
hamad

これを試して :

プロバイダーを作成し、必要な依存関係を持つ関数を追加します。

import { Injectable }     from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import 'rxjs/Rx';


 //  Function :

getIP(): Observable<Data[]> {
    return this.http.get('http://ipinfo.io') // ...using post request
    .map((res:Response) => res.json()) // ...and calling .json() on the response to return data
    .catch((error:any) => Observable.throw(error.json().error || 'Server error')); //...errors if any
}

コントローラーコード:

getIP() {
    this.loading = true;
    this._myIPService.getIP()
    .subscribe(
        IPDetails => this.IppDetails,
        error =>  this.errorMessage = <any>error
        );
}

IPの詳細はすべてthis.IppDetails

0
Sangwin Gawande