前端面试的时候面试官可能会问你Get方法和POST的方法的区别,很多书上会说Get的请求长度是受限制的,请求在URL中等等等下面我们将看Thttpd处理Get和POST方法时怎样处理。
一般的HTTP请求将会分为3各部分以回车换行符间隔:
(1)起始行
起始行 需要表明请求的方法 请求的文件的路径(相对于HTTP服务器资源目录的路径) 请求使用的协议 三者以至少一个空格间隔。比如下面的格式:
GET /index.html HTTP/1.1 表明使用Get方法,请求HTTP服务器目录下的index.html文件 使用的HTTP协议为1.1
(2)首部
首部有很多参数表明接收的数据类型,缓存控制,用户代理,缓存控制,接收编码类型等信息,可以有0或者多个键值对以回车换行符结束
(3)主题
数据正文部分,可以没有。
比如获取w3school的根文件可以使用下面的字符发送到w3school.com.cn的80端口,<cr>表示回车<lf>表示换行
连接ip:120.50.41.41:80
发送的内容 GET / HTTP/1.1 <cr><lf> host:www.w3school.com.cn<cr><lf><cr><lf> <cr><lf>
由于w3school必须要填写首部的host所以上面填写了首部的host内容,一般的其他服务器比如这里的Thttpd服务器Get请求可以没有首部和主题。
现在我们进入主题说一下Get和POST在服务器端的区别:
一般做前端都应该知道Get请求的请求参数都在URL中而POST的请求在主题中所