###前提・実現したいこと
JAVAを利用してWEBシステムを構築しています。
アクセス元の端末によって表示する項目を変更したいと考えています。
そのページに至るまでに認証は行っていません。
--------------------2017/09/06 16:55 追記STA--------------------
利用者のネットワーク 10.10.10.0
利用者の端末 10.10.10.1 ~ 10.10.10.100
利用者のグローバルIP 100.100.100.100
サーバー側のグローバルIP 101.100.100.100
サーバー側には
10.10.10.1 aaa
10.10.10.2 bbb
10.10.10.3 ccc
といったような内容のDBがあったとして、
10.10.10.3からアクセスした場合にトップページに"ccc"
と表示したいのです。
--------------------2017/09/06 16:55 追記 END--------------------
###発生している問題・エラーメッセージ
システムを利用するユーザー単位内でプライベートIPアドレスが被ることはないため、
プライベートIPあたりで実現できるかと思ったのですが、
実際に行ってみるとグローバルIPしか取得できません。
プライベートIPアドレスをサーバーから取得することは難しいのでしょうか…
プライベートIP以外で端末特定できるような手法はありますでしょうか。
(ID/PASS認証はNGでお願いします。クッキーやクライアント証明書あたりしかないでしょうか…?)
###該当のソースコード
JAVA
1String ip = request.getHeader("X-Forwarded-For"); 2if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 3 ip = request.getHeader("Proxy-Client-IP"); 4} 5if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 6 ip = request.getHeader("WL-Proxy-Client-IP"); 7} 8if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 9 ip = request.getHeader("HTTP_CLIENT_IP"); 10} 11if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 12 ip = request.getHeader("HTTP_X_FORWARDED_FOR"); 13} 14if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 15 ip = request.getRemoteAddr(); 16}
生IPなので ip = request.getRemoteAddr();
でしか入ってきません。
回答5件
あなたの回答
tips
プレビュー