http请求报包含三个部分:

请求行 + 请求头 + 数据体

请求行包含三个内容 method + request-URI + http-version

method 包含有 post , get, head,delete, put, connect, options, patch, propfind, propatch, mkcol, copy, move, lock, unlock, trace, head

方法:

get

通过请求URI获得资源
post  用于添加新的资源,用于表单提交

put

用于修改某个内容
delete  删除某个内容
connect  用于代理进行传输例如SSL
options  询问可以执行那些方法
patch  部分文档更该
propfind  查看属性
proppatch  设置属性
mkcol  创建集合
copy  拷贝
move  移动
lock  加锁
unlock  解锁
trace  用于远程诊断服务器
head  类似于get,用于检查对象是否存在用于得到元数据

主要介绍get方法和post方法

get方法:

  是在url中说明情请求的资源,比如https://www.baidu.com/con?from=self?_t=1466609839126 其中?后的数据就是请求的数据,并且连接用&,get方法也可以提交表单数据,但是提交的数据在url中,其他人可以通过查看历史记录中的url来获取你提交的数据,这样很不安全

post方法:

  传输数据不在url中,而在数据段中出现,并且请求头多了Content-Type 和 Content-Length,post提交表单数据的时候比get方法更安全

post方法提交表单和get方法提交表单相比较:

1>get明文传输,信息附加在url上面,get明文传输,post更加安全
2> get传输有大小限制,应该是3k,post需要制定传输类型
3 >get多用于获取数据,根据get变量的不同调用不同的数据,post多用于提交数据,提交用户输入的数据

get方法和post方法的区别:

1>Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求
2>Get是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改
3>Get请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密。
4>Get传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了,不同的浏览器对URL的长度的限制是不同的。
5>GET请求的数据会被浏览器缓存起来,用户名和密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。在服务器端,用Request.QueryString来获取Get方式提交来的数据
6>Post请求则作为http消息的实际内容发送给web服务器,数据放置在请求体中,Post没有限制提交的数据。Post比Get安全,当数据是中文或者不敏感的数据,则用get,因为使用get,参数会显示在地址,对于敏感数据和不是中文字符的数据,则用post
7>POST表示可能修改变服务器上的资源的请求,在服务器端,用Post方式提交的数据只能用Request.Form来获取

请求行例如 : GET /icwork/? Search = product HTTP/1.1

请求头

请求头包含:

Accept:指浏览器或其他客户可以接爱的MIME文件格式。Servlet可以根据它判断并返回适当的文件格式。

User-Agent:是客户浏览器名称

Host:对应网址URL中的Web名称和端口号。

Accept-Langeuage:指出浏览器可以接受的语言种类,如en或en-us,指英语。

connection:用来告诉服务器是否可以维持固定的HTTP连接。http是无连接的,HTTP/1.1使用Keep-Alive为默认值,这样,当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都建立连接

Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能。

Referer:表明产生请求的网页URL。如比从网页/icconcept/index.jsp中点击一个链接到网页/icwork/search,在向服务器发送的GET/icwork/search中的请求中,Referer是http://hostname:8080/icconcept/index.jsp。这个属性可以用来跟踪Web请求是从什么网站来的。

User-Agent:是客户浏览器名称。

Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType()方法取得。

Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8859-1.

Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。

getf方法请求头例如:

Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:PSTM=1466499789; BAIDUID=D3A617EE01FFA9DB9B7E3E5F0D3A01EE:FG=1; BIDUPSID=4AA34EC11075CB66B8BC9792DD422B6F; BDUSS=VCc1M0cVQtYnFGfmxTUW5kVTUydnBZUmhiWFRXbnRlMnpIdWV2ODVxNHZ1WkZYQVFBQUFBJCQAAAAAAAAAAAEAAADkEA1ZtPO3rMfRt6zH0cfRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8salcvLGpXdz; BD_HOME=1; BD_UPN=123353; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; BD_CK_SAM=1; H_PS_PSSID=19292_18286_1458_20318_18241_20369_17942_20388_19690_20417_18560_17001_15560_12277_20253; BDSVRTM=0
Host:www.baidu.com
Referer:https://www.baidu.com/s?wd=http%20%E8%AF%B7%E6%B1%82%E6%95%B0%E6%8D%AE%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%E6%A0%BC%E5%BC%8F&rsv_spt=1&rsv_iqid=0x9b746a8000022af9&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=1&oq=http%20%E8%AF%B7%E6%B1%82%E6%96%B9%E5%BC%8Fpost%20url%E6%A0%BC%E5%BC%8F&rsv_t=59fb7cEn5xgK8JFpqQ7F7coy6k6dn5sGpEMj1cDM4oMoy0TGArJ2l3fxOqy6F9lXoqoi&inputT=7936&rsv_pq=ca5859d100027005&rsv_sug3=73&rsv_sug1=12&rsv_sug7=100&rsv_sug2=0&rsv_sug4=32020
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36

post方法的请求头

Accept:*/*
Accept-Encoding:gzip, deflate, br
Accept-Language:en-US,en;q=0.8
Authorization:Basic WkEtMTE0MjcyNjAyMDY=
Connection:keep-alive
Content-Length:666
Content-Type:application/json
Host:zhihu-web-analytics.zhihu.com
Origin:http://www.zhihu.com
Referer:http://www.zhihu.com/question/41690822
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36
Request Payload
view source

相比之下多了content-Type 和 Content-Length

Content-Type:表示的是请求报文体的 MIME 类型  ,注:GET的请求消息体是空的 所以不需要指定消息体的MIME类型

Content-Length:表示的是 post的数据的长度

例如请求数据:

1 GET/sample.jspHTTP/1.1
2 Accept:image/gif.image/jpeg,*/*
3 Accept-Language:zh-cn
4 Connection:Keep-Alive
5 Host:localhost
6 User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
7 Accept-Encoding:gzip,deflate
8
9 username=jinqiao&password=1234

第一行为http请求行,包含方法,URI 和http版本

1-7为请求头,包含浏览器,主机,接受的编码方式和压缩方式

第8行表示一个空行 表示请求头结束 这个空行是必须的

第9行是数据体,比如是需要查询的信息。

http响应体由三部分组成:

http响应由三个部分组成分别是状态行,响应头,响应正文。

状态行是由:HTTP-Version+Status-Code+Reason-Phrase

比如:HTTP/1.1 200 ok

分别表示http版本 + 状态码 + 状态代码的文本描述

状态码:

1xx 指示信息–表示请求已接收,继续处理
2xx 成功–表示请求已被成功接收、理解、接受
3xx 重定向–要完成请求必须进行更进一步的操作。
4xx 客户端错误–请求有语法错误或请求无法实现。
5xx 服务器端错误–服务器未能实现合法的请求。

响应头:包含服务器类型,日期,长度,内容类型等

Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:13:33 GMT
Content-Type:text/html
Last-Moified:Mon,6 Oct 2003 13:23:42 GMT
Content-Length:112

响应正文响应正文就是服务器返回的HTML页面

【转】 http请求包含什么相关推荐

  1. 请求包含(Include)和请求转发(Forward)

    定义 请求包含是指将另一个Servlet的请求处理流程包含进来. 请求转发是指将请求转发给别的Servlet处理. 实现 实现请求包含和请求转发,可以使用HttpServletRequest的getR ...

  2. ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...

    原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...

  3. RequestDispatcher对象的应用-请求包含

    一.介绍 请求包含指的是使用include()方法将Servlet请求转发给其它Web资源进行处理,与请求转发不同的是,在请求包含返回的响应消息中,既包含了当前Servlet的响应消息,也包含了其他W ...

  4. 【软件测试】POST请求包含哪些参数

    POST请求包含哪些参数 HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范.规范把 HTTP 请求分为三个部分:请求行(状态行,URL).请求头(Headers).请 ...

  5. Servlet之请求包含与会话技术获取表单信息(Cookie)

    request获取form表单中提交的数据 用ServletContext获取 ServletContext context = this.getServletContext(); String us ...

  6. 请求转发(forword())和请求包含(include())

    描述: 一个请求往往需要多个servlet协同合作才能完成,此时我需要请求转发 或 请求包含(不常用) 请求转发: 由下一个servlet完成响应体(通过response两个流发送给浏览器的叫做响应体 ...

  7. http 请求包含哪几个部分,分别有何作用?

    http 协议 用了这么久的http请求,你有全面了解过吗? HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议 ...

  8. curl post请求包含数组参数

    场景: 使用curl方法,post请求接口,参数中包含数组格式的值,又不想把数组转换成json,这时候就需要对curl方法做一点点改动了. curl_setopt($ch, CURLOPT_POSTF ...

  9. oracle utl_http.request,通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求

    直接上程序,程序可以直接运行,只要修改IP地址和post参数就可以: DECLARE req utl_http.req; resp utl_http.resp; l_clob CLOB; l_buf_ ...

最新文章

  1. Asp.net(asp,jsp)+JavaScript动态实现添加数据行
  2. Lambda表达式有参数有返回值的练习(自定义接口)
  3. linux能远程开机么,Linux 下如何实现远程开机
  4. python退出mainloop_python - Python Turtle mainloop()的用法 - 堆栈内存溢出
  5. solr crud_Spring Data Solr教程:CRUD(差不多)
  6. Windows 环境下运用Python制作网络爬虫
  7. 运维工程师项目案例_【IT专场】系统运维工程师等岗位在线邀你入职,base上海|深圳|昆山...
  8. ora-24247:网络访问被访问控制列表(ACL)拒绝
  9. Smoothy将于4月22日-27日在BSCPad等4个平台进行IDO
  10. ffmpeg拉流设置暂停_ffmpeg+SDL2实现的视频播放器「退出、暂停、播放」
  11. 暗通道去雾及C++实现
  12. Figma插件开发-生成Gif
  13. pos 指令集 linux,Linux系统下10大开源POS系统
  14. 创建线程-学到了4种方法
  15. 从四面体数据中提取表面
  16. timeline java_Java Timeline.stop方法代码示例
  17. 股票买卖接口如何实现委托下单的功能?
  18. android快速充电,快到令人发指 外媒评14款安卓机充电速度
  19. 深度学习之图像分类(十六)-- EfficientNetV2 网络结构
  20. MacOS 系统 文件夹解析

热门文章

  1. Expanding Low-Density Latent Regions for Open-Set Object Detection
  2. Java中的设计者模式
  3. python爬取哔哩哔哩网页弹幕内容,并将爬取的内容以五角星的形式显示出来
  4. 德州扑克分池算法 思路及lua实现
  5. 龙光集团·天境助力业主成就考究生活
  6. 我用Python爬取了妹子网100G的套图
  7. python 语法基础篇
  8. 读取统计微信捐款(matlab)
  9. 深入探索linux系统的启动流程
  10. Spring task corn表达式