日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

如何阻止ajax自动重定向_重发和重定向有什么区别与重定向应用

發布時間:2025/3/19 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何阻止ajax自动重定向_重发和重定向有什么区别与重定向应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

重發和重定向有什么區別

重發

方式1:

request.getRequestDispatcher("new.jsp").forward(request, response);//轉發到new.jsp

方式2:

<jsp:forward page="apage.jsp" />

重定向

方式一:

response.sendRedirect("new.jsp");//重定向到new.jsp

方式二:

<%response.sendRedirect("new.jsp");//重定向到new.jsp%>

轉發是服務器行為,重定向是客戶端行為

如何理解重定向與轉發

重定向,其實是兩次request,

第一次,客戶端request A,服務器響應,并response回來,告訴瀏覽器,你應該去B。這個時候IE可以看到地址變了,而且歷史的回退按鈕也亮了。重定向可以訪問自己web應用以外的資源。在重定向的過程中,傳輸的信息會被丟失。

轉發

請求轉發是服務器內部把對一個request/response的處理權,移交給另外一個 對于客戶端,它只知道自己最早請求的那個A,而不知道中間的B,甚至C、D。傳輸的信息不會丟失。

更形象的解釋:

重定向:你先去了A局,A局的人說:“這個事情不歸我們管,去B局”,然后,你就從A退了出來,自己乘車去了B局。

轉發:你先去了A局,A局看了以后,知道這個事情其實應該B局來管,但是他沒有把你退回來,而是讓你坐一會兒,自己到后面辦公室聯系了B的人,讓他們辦好后,送了過來。

  • https://blog.csdn.net/meiyalei/article/details/2129120?utm_medium=distribute.wap_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.wap_blog_relevant_pic&depth_1-utm_source=distribute.wap_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.wap_blog_relevant_pic

重定向的應用 : 短連接跳轉

舉個例子:

這樣一個短連接,點擊后,會跳轉到真實的 app 的一個頁面,這個是怎么實現的?

為啥要短鏈接

給用戶發送短信的時候,發送一個鏈接,當用戶點擊鏈接的時候,能夠打開app,同時跳轉到app的某一個頁面。這個時候就需要app端給我提供一個鏈接(肯定帶了參數),但是發送短信的時候又不能完全把這個鏈接發送給用戶。一是因為那樣的鏈接太丑,二是因為太長。所以則用到了短鏈接。

  • https://blog.csdn.net/qq_38111316/article/details/88587845

短鏈接實現原理?

就是把一個長地址如:http://zhyq.shibei.com/article/article.htm 用一個算法轉換成短地址如:http://csdn.cn/7bqr87dc。然后把7bqr87dc------->http://zhyq.shibei.com/article/article.htm之間的對應關系保存到數據庫中去。當用戶訪問http://csdn.cn/7bqr87dc鏈接時,系統到數據庫中找到真實的URL地址,實現跳轉。

短鏈接算法

算法1

MD5的生成的 ,其實這個算法主要是把長字符串變小 ,這個算法是不可逆的,所以別想著去直接反轉短地址 .

利用MD5的算法,其具體過程為:

  • 將原始長鏈接進行MD5加密,為了避免防止算法泄漏,可以在原鏈接上添加自定義的字符串作為密鑰。
  • 把128位的MD分成四組,每組32位,對應一個候選短鏈接。
  • 對于每個32位的數,將它與0x3FFFFFFF進行位與運算,取其低30位的數據。把得到的值與0x0000003D進行位與運算,再把得到的結果作為下標在字符表中選取字符,再把原數字右移5位進行相同操作,重復進行6次得到6個字符,即組成一個候選短鏈接地址。
  • 在4個候選短鏈接中隨機選擇一個作為最終的短鏈接,把長短鏈接映射關系存入數據庫中。
  • 算法實現:

    import java.security.MessageDigest;public class ShotUrlUtil {public static void main(String[] args) {System.out.println(shortUrl("http://www.baidu.com/"));}public static String shortUrl(String url) {String[] chars = new String[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x","y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P","Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };// 對傳入網址進行 MD5 加密String md5str = getMD5Str(url);System.out.println(md5str);String hex = md5str;String sTempSubString = hex.substring(8, 16);long lHexLong = 0x3FFFFFF3 & Long.parseLong(sTempSubString, 16);String outChars = "";for (int j = 0; j < 6; j++) {long index = 0x0000003C & lHexLong;outChars += chars[(int) index];// 每次循環按位右移 5 位lHexLong = lHexLong >> 5;}return outChars;}private static String getMD5Str(String str) {MessageDigest messageDigest = null;try {messageDigest = MessageDigest.getInstance("MD5");messageDigest.reset();messageDigest.update(str.getBytes("UTF-8"));} catch (Exception e) {System.out.println("catch!");}byte[] byteArray = messageDigest.digest();StringBuffer md5StrBuff = new StringBuffer();for (int i = 0; i < byteArray.length; i++) {if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));elsemd5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));}return md5StrBuff.toString();} }

    算法2

    算法本質上就是一個長短鏈接的映射過程,那么一個簡單的想法是用遞增的序號來表示短鏈接,每次進來一個長鏈接時,把它映射成當前的序號,同時把序號遞增以供下一個鏈接使用。因為鏈接地址同時使用的是a-z、A-Z和0-9這62個字符,把10進制的序號值轉化為這個62進制的表示即可得到對應的短鏈接。

    26個大寫字母 26小寫字母,10個數字,隨機生成6個然后插入數據庫對應一個id,短連接跳轉的時候,根據字符串查詢到對應id,即可實現相應的跳轉!不過2的62次方,大概率上不會重復。這個利用的就是低進制轉化為高進制時,字符數會減少的特性。

    key 就是id value 是真實 url ,id 轉換成62進制即可生成短鏈接。

    • https://tool.lu/hexconvert/

    這個直接的想法非常簡單粗暴,另外一個直觀的想法是使用隨機的方法生成長短鏈接的映射關系。每次進來一個長鏈接時就隨機一個短鏈接來進行映射,如果通過數據庫查詢發現此短鏈接已經使用過,則重新進行隨機直到產生一個未曾使用過的短鏈接為止

    短鏈接生成

    實現思路

    服務器收到一個短鏈接請求時,需要把從http地址中解析出短鏈接,然后將得到的短鏈接在數據庫中進行查詢,找到其對應的長連接,進而重定向到該長長鏈接對應的地址。

  • 建立一個存短鏈接的表
  • 2.當點擊短鏈接的時候,跳轉到一個html頁面,然后加載該頁面的時候,通過ajax調用一個接口,返回該鏈接的真實地址,然后在重定向到真實的地址。

    <script type="text/javascript" > window.onload =function() {var locationurl = this.location.href;$.get("http://zhyq.shibei.com:8080/cnp/webservice.cnp?method=getShortLink&noSign=true",{"link":locationurl}, function(result){var u = navigator.userAgent;var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端if (isAndroid) {window.location.href=result.data.android_url;} else if (isiOS){window.location.href=result.data.real_link_url; } else {alert("不支持當前設備");}},"json"); } </script>

    舉個例子

    當我們在瀏覽器里輸入 http://t.cn/RlB2PdD 時

    • DNS首先解析獲得 http://t.cn 的 IP 地址
    • 當 DNS 獲得 IP 地址以后(比如:74.125.225.72),會向這個地址發送 HTTP GET 請求,查詢短碼 RlB2PdD
    • http://t.cn 服務器會通過短碼 RlB2PdD 獲取對應的長 URL
    • 請求通過 HTTP 301 轉到對應的長 URL https://m.helijia.com 。

    301 是永久重定向,302 是臨時重定向。短地址一經生成就不會變化,所以用 301 是符合 http 語義的。同時對服務器壓力也會有一定減少。

    歡迎關注公眾號:程序員開發者社區

    總結

    以上是生活随笔為你收集整理的如何阻止ajax自动重定向_重发和重定向有什么区别与重定向应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。