Http POST 提交資料的四種方式解析

2021-09-13 13:44:24 字數 2154 閱讀 3774

我們知道,http 協議是以 ascii 碼傳輸,建立在 tcp/ip 協議之上的應用層規範。http 協議規定的 http 請求方法有 options、get、head、post、put、delete、trace、connect 這幾種。其中 post 一般用來向服務端提交資料,本文主要討論 post 提交資料的幾種方式。

協議規定 post 提交的資料必須放在訊息主體(entity-body)中,但協議並沒有規定資料必須使用什麼編碼方式。但是,資料傳送出去,還要服務端解析成功才有意義。

服務端通常是根據請求頭(headers)中的 content-type 欄位來獲知請求中的訊息主體是用何種方式編碼,再對主體進行解析。

post 提交資料方案,包含了 content-type 和訊息主體編碼方式兩部分。下面就正式開始介紹它們。

在伺服器端判斷request來自ajax請求(非同步)還是傳統請求(同步):

這又是乙個常見的 post 資料提交的方式。我們使用表單上傳檔案時,必須讓 表單的 enctyped

等於 multipart/form-data。直接來看乙個請求示例:

提示 input type=file 瀏覽器處於安全考慮 , 必須操作賦值,不能直接改value,

比如canvas 直接生成之後上傳 就不能使用 input type=file。可以直接把得到的轉換成 base64 上傳

boundary 檔案分割線

由於 json 規範的流行,除了低版本 ie 之外的各大瀏覽器都原生支援 json.stringify,服務端語言也都有處理 json 的函式,使用 json 不會遇上什麼麻煩。

json 格式支援比鍵值對複雜得多的結構化資料,這一點也很有用 angularjs 中的 ajax 功能,預設就是提交 json 字串。例如下面這段**:

);最終傳送的請求是:

json.parse()和json.stringify()

現在幾乎不用

預設情況下,標準的跨域請求是不會傳送cookie等使用者認證憑據的,xmlhttprequest 2的乙個重要改進就是提供了對授信請求訪問的支援。

Http POST 提交資料的四種方式解析

我們知道,http 協議是以 ascii 碼傳輸,建立在 tcp ip 協議之上的應用層規範。http 協議規定的 http 請求方法有 options get head post put delete trace connect 這幾種。其中 post 一般用來向服務端提交資料,本文主要討論 po...

四種常見的 POST 提交資料方式

urlencoded 其次,提交的資料按照 key1 val1 key2 val2 的方式進行編碼,key 和 val 都進行了 url 轉碼。大部分服務端語言都對這種方式有很好的支援。例如 php 中,post title 可以獲取到 title 的值,post sub 可以得到 sub 陣列。這...

四種常見的POST提交資料方式

想寫這篇文章的原因不太想說,哎,十萬個後台十萬個想法。post是前端最常見的一種請求資料方式,比get請求方式更安全的同時,也支援更大的資料傳輸。http協議把http請求分為三個部分 狀態行 請求頭 訊息主體 通過post提交的資料需要放在請求頭的訊息主體中,主要支援以下四種格式,伺服器主要通過對...