【转】 http请求包含什么
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请求包含什么相关推荐
- 请求包含(Include)和请求转发(Forward)
定义 请求包含是指将另一个Servlet的请求处理流程包含进来. 请求转发是指将请求转发给别的Servlet处理. 实现 实现请求包含和请求转发,可以使用HttpServletRequest的getR ...
- ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段...
原文地址:ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段 ServletRequest 基本概念 ...
- RequestDispatcher对象的应用-请求包含
一.介绍 请求包含指的是使用include()方法将Servlet请求转发给其它Web资源进行处理,与请求转发不同的是,在请求包含返回的响应消息中,既包含了当前Servlet的响应消息,也包含了其他W ...
- 【软件测试】POST请求包含哪些参数
POST请求包含哪些参数 HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范.规范把 HTTP 请求分为三个部分:请求行(状态行,URL).请求头(Headers).请 ...
- Servlet之请求包含与会话技术获取表单信息(Cookie)
request获取form表单中提交的数据 用ServletContext获取 ServletContext context = this.getServletContext(); String us ...
- 请求转发(forword())和请求包含(include())
描述: 一个请求往往需要多个servlet协同合作才能完成,此时我需要请求转发 或 请求包含(不常用) 请求转发: 由下一个servlet完成响应体(通过response两个流发送给浏览器的叫做响应体 ...
- http 请求包含哪几个部分,分别有何作用?
http 协议 用了这么久的http请求,你有全面了解过吗? HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议 ...
- curl post请求包含数组参数
场景: 使用curl方法,post请求接口,参数中包含数组格式的值,又不想把数组转换成json,这时候就需要对curl方法做一点点改动了. curl_setopt($ch, CURLOPT_POSTF ...
- oracle utl_http.request,通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求
直接上程序,程序可以直接运行,只要修改IP地址和post参数就可以: DECLARE req utl_http.req; resp utl_http.resp; l_clob CLOB; l_buf_ ...
最新文章
- Asp.net(asp,jsp)+JavaScript动态实现添加数据行
- Lambda表达式有参数有返回值的练习(自定义接口)
- linux能远程开机么,Linux 下如何实现远程开机
- python退出mainloop_python - Python Turtle mainloop()的用法 - 堆栈内存溢出
- solr crud_Spring Data Solr教程:CRUD(差不多)
- Windows 环境下运用Python制作网络爬虫
- 运维工程师项目案例_【IT专场】系统运维工程师等岗位在线邀你入职,base上海|深圳|昆山...
- ora-24247:网络访问被访问控制列表(ACL)拒绝
- Smoothy将于4月22日-27日在BSCPad等4个平台进行IDO
- ffmpeg拉流设置暂停_ffmpeg+SDL2实现的视频播放器「退出、暂停、播放」
- 暗通道去雾及C++实现
- Figma插件开发-生成Gif
- pos 指令集 linux,Linux系统下10大开源POS系统
- 创建线程-学到了4种方法
- 从四面体数据中提取表面
- timeline java_Java Timeline.stop方法代码示例
- 股票买卖接口如何实现委托下单的功能?
- android快速充电,快到令人发指 外媒评14款安卓机充电速度
- 深度学习之图像分类(十六)-- EfficientNetV2 网络结构
- MacOS 系统 文件夹解析