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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[整理]详记被忽略的Get与Post

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [整理]详记被忽略的Get与Post 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[事發]
使用了近5年的項目,來了一個最最基本的bug
畫面輸入+號,跳轉至后畫面,+號變成了空格!
[原因]
畫面使用url(get)方法傳參數,并且沒有進行url轉碼!
恐怖的是,幾乎所有頁面都是如此...
[解決辦法]
1.建立假的form,使用post傳參
2.對于彈窗頁面,只能通過showModalDialog的參數vArguments,將參數傳給中間跳板畫面,再由跳板畫面通過window.dialogArguments獲取參數,制造假的form,再post給目標頁面
[延伸]
由此對get與post做了一個較為深入的理解

【正題】

1.GET
通過url進行參數傳遞,顯示于瀏覽器的地址欄中,可以讓用戶看清當前的頁面層次[有時還還有日期,類別等含義],但是長度有限制,不可以超過某個長度[至于多長,似乎瀏覽器還各不相同,總之不能太長了]

[跳轉流程](以java servlet為例)
js或按鈕設定跳轉頁面路徑url[需要代碼內進行url編碼],瀏覽器直接發送請求至服務器[瀏覽器不對url做任何處理],請求到servlet后,默認對url進行url解碼操作。[其中還會有字符編碼解碼問題,瀏覽器會根據頁面charset進行中文或其他語言文字的編碼,服務器端也需要進行相應的字符解碼]

2.POST
通過表單,將表單內各個空間的內容,通過submit方式,發送給url指定的服務器[對于文件等,需要設定表單為:enctype="multipart/form-data"]

[跳轉流程](以java servlet為例)
js或按鈕進行form的submit操作,瀏覽器發送請求至服務器[瀏覽器會自動對表單內內容進行url以及字符編碼],請求到servlet后,默認對url進行url解碼操作。
[與get不同在于,瀏覽器是否進行url編碼操作]

3.Ajax
也有get和post兩種請求類型

get/post本質區別
GET將表單中數據的按照variable=value的形式,添加到action所指向的URL后面,并且兩者使用“?”連接,而各個變量之間使用“&”連接;POST是將表單中的數據放在form的數據體中,按照變量和值相對應的方式,傳遞到action所指向URL。

【url編碼解碼的js函數】
escape,encodeURI,encodeURIComponent

escape不編碼字符有69個:
*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不編碼字符有82個:
!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不編碼字符有71個:
!, ',(,),*,-,.,_,~,0-9,a-z,A-Z

解碼函數:
unescape,decodeURI,decodeURIComponent

【何時適用get/post】
http://blog.sina.com.cn/s/blog_78edbfd801012il4.html

1.GET能隨在URL之后的請求參數長度是有限的,過長的請求參數,或像文件上傳這類的大量數據,就不適合用GET請求,而應該改用POST。
2.GET的請求參數會出現在地址欄上,敏感性或保密性的請求參數(例如信用卡號碼、用戶名、密碼等),就不應該使用GET請求來發送。

3.POST請求的請求參數不會出現在地址欄上,所以無法添加到瀏覽器的書簽之中,如果有些頁面是根據請求參數進行不同的頁面顯示(例如論壇的文章發表),而你應該希望可以讓用戶設置書簽,以使日后可以直接點擊書簽進行瀏覽,則此時應該使用GET。

4.有些瀏覽器會根據地址欄緩存數據,如果地址欄是相同的URL,則會直接從瀏覽器緩存中取出數據,而不會真正發送請求而服務器上查詢最新的數據,如果不希望服務器狀態改變,而瀏覽器仍從緩存中取得舊數據,則可以改用POST(使用GET基本上也有方法避免緩存,例如在地址欄上附加時間戳記,讓每次GET請求的地址欄都不相同)。

5.GET是不安全的,因為在傳輸過程,數據被放在請求的URL中,而如今現有的很多服務器、代理服務器或者用戶代理都會將請求URL記錄到日志文件中,然后放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的
[其實post也不安全,代理服務器可以輕而易舉的獲取數據]

轉載于:https://www.cnblogs.com/wangxinsheng/p/4367966.html

總結

以上是生活随笔為你收集整理的[整理]详记被忽略的Get与Post的全部內容,希望文章能夠幫你解決所遇到的問題。

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