HTTP POST请求

1.HTTP的请求方式,主要是GET和POST请求两种方法。

GET 请求响应:GET 请求不存在请求实体部分,键值对参数放置在 URL 尾部,因此请求头不需要设置 Content-Type 字段(www.bilibili.com?hehe=你的我的)

复制代码
GET请求会显示请求指定的资源。一般来说GET方法应该只用于数据的读取。
GET会方法请求指定的页面信息,并返回响应主体,GET被认为是不安全的方法,因为GET方法会被网络蜘蛛等任意的访问。
使用GET方法时,查询字符串(键值对)被附加在URL地址后面一起发送到服务器:
/test/demoform.html?name1=value1&name2=value2
非 ASCII 码会自动进行编码转换,GET 参数的编码方式是无法人为干涉的,这导致了不同浏览器有不同的编码方式,因此最稳妥的方案是人工预编码,人工解码,从而禁止浏览器编码的干涉 特点: GET请求能够被缓存 GET请求会保存在浏览器的浏览记录中 以GET请求的URL能够保存为浏览器书签 GET请求有长度限制 GET请求主要用以获取数据
复制代码

POST 发送数据给服务器处理

复制代码
POST 发送数据给服务器处理,数据包含在HTTP信息正文中
POST请求会向指定资源提交数据,请求服务器进行处理,如:表单数据提交、文件上传等,请求数据会被包含在请求体中。
POST方法可能会创建新的资源或/和修改现有资源。
使用POST方法时,查询字符串在POST信息中单独存在,和HTTP请求一起发送到服务器:
POST /test/demoform.html HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
特点:
POST请求不能被缓存下来
POST请求不会保存在浏览器浏览记录中
以POST请求的URL无法保存为浏览器书签
POST请求没有长度限制

2.HTTP提交数据的方式(内容类型),Content-Type

       第一类:raw 原始类型,可以上传任意格式的文本,比如 text、json、xml、html(中文不进行编码)

    1)XML格式的:application/xmltext/xml ,application/xml 采用的编码格式是XML头中的编码【<?xml version="1.0" encoding="utf-8"?>】,text/xml采用的是us-ascii编码

    2)JSON格式的:application/json 和text/json

  第二类:application/x-www-form-urlencoded,会将表单内的数据转换拼接成 key-value 对(非 ASCII 码进行编码)

   3)默认请求方式:application/x-www-form-urlencoded;charset=utf-8  

application/x-www-form-urlencoded
浏览器的原生 <form> 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。
提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。
ajax就是用得这种方式

application/x-www-form-urlencoded 对非 ASCII 的编码方式与 GET 请求参数的编码方式和格式都是一样的

值得一提的是,POST 请求的编码格式是可以人工干预的

    第三类:multipart/form-data,将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件 

      4)文件上传:  Multipart/form-data

multipart/form-data
浏览器的原生 <form> 表单,需要设置 enctype 属性,表单上传文件时,必须让 <form> 表单的 enctyped 等于 multipart/form-data。 

 

原文地址:https://www.cnblogs.com/shan-pj/p/9910116.html