1. 程式人生 > >(轉載)http協議的Request Payload 和 Form Data 的區別

(轉載)http協議的Request Payload 和 Form Data 的區別

正文 pri 分享 正在 mapping enc .com 9.png wid

我正在開發的項目前端和後端是完全獨立的,通過配置 webpack 的 proxy 將前端請求跨域代理到後臺服務。昨天發現,我前端執行 post 請求,後臺 springmvc 的 @RequestMapping 接收不到對應的請求參數。開始我以為是我 proxy 配置有問題,導致 post 參數不能傳到後臺。然而,並不是這樣…

proxy 配置如下:

技術分享圖片

前端代碼:

技術分享圖片

java 後臺代碼:

技術分享圖片

Request Payload VS Form Data

前端請求

我看了前端發起的請求,請求正文並不是我熟悉的 Form Data,而是 Request Payload。如圖註意下面兩個請求的 Content-Type

的區別。

Request Payload 請求

技術分享圖片

Form Data 請求

技術分享圖片

了解這兩個的區別之前,我們先回顧下 HTTP 請求報文格式:

技術分享圖片

Request Payload 大概格式如下,請求頭部的 Content-Type: application/json,並且請求正文是一個 json 格式的字符串

技術分享圖片

Form Data 大概格式如下,請求頭部的 Content-Type: application/x-www-form-urlencoded,並且請求正文是類似 get 請求 url 的請求參數

技術分享圖片

解決方案:在method: "post"後面加上contentType : "application/x-www-form-urlencoded"

(轉載)http協議的Request Payload 和 Form Data 的區別