最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何限制IP訪問頁面

 更新時間:2020年09月17日 09:56:14   作者:ZJ  
這篇文章主要介紹了Java如何限制IP訪問頁面,幫助大家完成需求,實現(xiàn)白名單,感興趣的朋友可以了解下

最近遇到一個需求,一個只能內(nèi)網(wǎng)訪問的網(wǎng)站,需要限制ip訪問。就是網(wǎng)站內(nèi)的部分文章只有白名單內(nèi)的ip才能打開。因為是靜態(tài)化的網(wǎng)站,所有文章都是靜態(tài)html頁面。所以首先想到的就是直接js獲取訪問者ip然后再判斷是否在白名單內(nèi),不在白名單內(nèi)就到?jīng)]有權(quán)限頁面。

但是JS獲取內(nèi)網(wǎng)Ip還是比較麻煩的,查到幾個方法最后試了都不行。

記錄下查到的幾個方法和最后實現(xiàn)的方法。

JS獲取外網(wǎng)ip的方法:

//最簡單的獲取外網(wǎng)ip的方法。可以直接用,但是沒啥用..
<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
<script>
 document.write(returnCitySN["cip"]);
</script>

JS獲取內(nèi)網(wǎng)Ip的方法

function getIP(callback) {
  let recode = {};
  let RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
  // 如果不存在則使用一個iframe繞過
  if (!RTCPeerConnection) {
   // 因為這里用到了iframe,所以在調(diào)用這個方法的script上必須有一個iframe標簽
   // <iframe id="iframe" sandbox="allow-same-origin" style="display:none;"></iframe>
   let win = iframe.contentWindow;
   RTCPeerConnection = win.RTCPeerConnection || win.mozRTCPeerConnection || win.webkitRTCPeerConnection;
  }
 
  //創(chuàng)建實例,生成連接
  let pc = new RTCPeerConnection();
 
  // 匹配字符串中符合ip地址的字段
  function handleCandidate(candidate) {
  debugger;
   let ip_regexp = /([0-9]{1,3}(\.[0-9]{1,3}){3}|([a-f0-9]{1,4}((:[a-f0-9]{1,4}){7}|:+[a-f0-9]{1,4}){6}))/;
   let ip_isMatch = candidate.match(ip_regexp)[1];
   if (!recode[ip_isMatch]) {
    callback(ip_isMatch);
    recode[ip_isMatch] = true;
   }
  }
 
  //監(jiān)聽icecandidate事件
  pc.onicecandidate = (ice) => {
   if (ice.candidate) {
    handleCandidate(ice.candidate.candidate);
   }
  };
  //建立一個偽數(shù)據(jù)的通道
  pc.createDataChannel('');
  pc.createOffer((res) => {
   pc.setLocalDescription(res);
  }, () => {});
 
  //延遲,讓一切都能完成
  setTimeout(() => {
   let lines = pc.localDescription.sdp.split('\n');
   lines.forEach(item => {
    if (item.indexOf('a=candidate:') === 0) {
     handleCandidate(item);
    }
   })
  }, 1000);
 }
getIP(function (ip) { alert(ip); });

利用WebRTC獲取真實內(nèi)網(wǎng)Ip,WebRTC是一個支持網(wǎng)頁瀏覽器進行實時語音對話或視頻對話的API

由于WebRTC在建立連接過程中,會向?qū)Ψ桨l(fā)送本地地址SDP,因此可以通過訪問SDP獲得訪問者的IP

但是有些瀏覽器用不了,所以還是放棄這種方式了。

最后還是覺得用Java來實現(xiàn)比較好吧,前端文章頁寫個ajax,每次進入文章先判斷文章是否需要限制IP訪問,如果需要就請求下后端,后端獲取Ip判斷是否在白名單內(nèi)。注意ajax要用同步。

Java獲取訪問者Ip方法:

 String ip = request.getHeader("x-forwarded-for");
 
  if (ip == null || ip.length() == 0 || "nuknown".equalsIgnoreCase(ip)) {
 
   ip = request.getHeader("Proxy-Client-IP");
  }
  if (ip == null || ip.length() == 0 || "nuknown".equalsIgnoreCase(ip)) {
 
   ip = request.getHeader("WL-Proxy-Client-IP");
  }
  if (ip == null || ip.length() == 0 || "nuknown".equalsIgnoreCase(ip)) {
 
   ip = request.getRemoteAddr();
  }
  System.out.println(ip);

以上方法均來自網(wǎng)絡(luò),親測有效,記錄于此。

以上就是Java如何限制IP訪問頁面的詳細內(nèi)容,更多關(guān)于Java限制IP訪問的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

塔河县| 株洲县| 鄂尔多斯市| 手游| 木兰县| 射阳县| 泸州市| 泰兴市| 宁阳县| 尚志市| 东宁县| 福清市| 手机| 霍邱县| 黑山县| 江安县| 高邮市| 渭源县| 介休市| 正蓝旗| 罗平县| 武冈市| 杭锦旗| 莱芜市| 扶绥县| 泾川县| 夏津县| 樟树市| 洛浦县| 嵊泗县| 临汾市| 苏尼特右旗| 饶平县| 通化县| 长治市| 安徽省| 浪卡子县| 广东省| 化隆| 鸡西市| 连山|