HTTP请求解析--从一个请求开始
先来看看一个http请求实例
请求行: POST /chapter17/user.html HTTP/1.1
请求头:
Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate
Accept-language: zh-CN,zh;q=0.8
Connection: keep-alive
Content-Length: 38
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host: 192.168.1.66:92
Orgin: http://localhost:3000/
Referer: http://localhost:3000/
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
请求行
组成: 请求方法 空格 请求URL的path 空格 协议名及版本号
请求方法: 常见的即POST、GET,此外还包括PUT、HEAD、DELETE、OPTIONS、TRACE
请求URL的Path: path= pathname+search, 与请求头里的Host组成完整url地址
备注: host= hostname+port,对于网址的组成可查看: http://www.cnblogs.com/yanze/p/6009127.html,这个很重要
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
请求头
参数详解:
Accept 客户端能够接受的MIME类型(别发其他类型给我)
application/json, text/javascript, */*; q=0.01,由此可知可接受application/json, text/javascript,但*/* q=0.01又是什么?
*/*,*是通配符,即任何字符串,*/*代表可为任何MIME类型
q(q-factor品质因数)为权重,代表对某种类型的喜好程度,以‘,’为分割标识,默认为1
application/json, text/javascript, */*; q=0.01=>application/json;q=1, text/javascript;q=1, */*; q=0.01,解释起来就是浏览器可接受任何文件,但最倾向application/json和 text/javascript
Accept-Encoding 浏览器能接受的编码方式
默认为identify,identify用于指代自身(例如:未经过压缩和修改)。除非特别指明,这个标记始终可以被接受。
Accept-Encoding: * 任何类型
Accept-Encoding: gzip, deflate gzip与deflate类型
Accept-language 浏览器可接受的语言
zh-CN,zh;q=0.8 zh-CH(zhongwen china中文简体)(zh代表中文全体,包括简体、繁体、方言等)
Connection
详情可查看: http://www.cnblogs.com/yanze/p/7750239.html
Content-Length 表示发送给对方的消息主体的大小
大小单位为十进制数字表示的八位元组的数目
Content-Type 当前发送信息的MIME类型
Host 当前发送请求的浏览器的host
host=hostname+port
Orgin(源头)
origin= protocal+hostname+port
Referer(引用页)
referer= protocal+hostname+port+search
referer原本是referrer,referer是误称,但错的人多了也就正确了。。
origin与referer与诸多区别:
1.origin只用于Post请求,Referer用于所有请求
2.设置referer容易被csrf攻击,origin更具安全性,详见:http://blog.csdn.net/zdavb/article/details/51161130
User-Agent(用户代理)
User-Agent: Mozilla/<version> (<system-information>) <platform> (<platform-details>) <extentions>
如: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
不同浏览器,不同系统会有不同的user-agent,这涉及到浏览器大战的那段鸡飞狗跳的历史,详情可见: http://www.cnblogs.com/egger/archive/2013/04/20/3032070.html
一言以蔽之: 现今混乱的场面, IE是始作俑者
HTTP请求解析--从一个请求开始的更多相关文章
- nginx js、css多个请求合并为一个请求(concat模块)
模块介绍 mod_concat模块由淘宝开发,目前已经包含在tengine中,并且淘宝已经在使用这个nginx模块.不过塔暂时没有包含在nginx中.这个模块类似于apache中的modconcat. ...
- robotframework-post request请求携带上一个请求返回的cookie
公司的接口服务需要先登录,获取服务端的cookie后,在后续的请求中携带这个cookie才能够访问 在尝试用RF工具进行自动化接口测试时,发现先访问登录接口之后,接着请求其他接口时没有自动携带上次请求 ...
- Jmeter之一个请求获取上一个请求的参数
刚开始有这个需求,网上都是一些使用正则表达式的例子,苦于自己看不好正式的表达式,且响应结果稍微变一下,自己就不会写了,于是谷歌上各种搜,也阅读官网上文档,后来发现一个好的插件 Json path Ex ...
- 从零开始写一个Tomcat(叁)--请求解析
挖坑挖了这么长时间也该继续填坑了,上文书讲到从零开始写一个Tomcat(贰)--建立动态服务器,讲了如何让服务器解析请求,分离servlet请求和静态资源请求,读取静态资源文件输出或是通过URLCla ...
- Android之三种网络请求解析数据(最佳案例)
AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...
- Nginx重要结构request_t解析之http请求的获取
请在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 本文主要参考为<深入理解nginx模块开发与架构解析>一书,处理用户请求部分,是一篇包含作者理解的读书笔记.欢迎指正,讨论. ...
- Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器
首先在线程组下添加两个HTTP请求, 添加好两个HTTP请求后,在每个HTTP请求下添加一个查看结果数 在第一个HTTP请求下添加正则表达式提取器 在第一个HTTP请求添加好IP地址,路径,端口号,协 ...
- OkHttp上传文件,服务器端请求解析找不到文件信息的问题
长话短说,不深入解释了,官方给的上传案例代码: private static final String IMGUR_CLIENT_ID = "..."; private stati ...
- scrapy递归解析和post请求
递归解析 递归爬取解析多页页面数据 每一个页面对应一个url,则scrapy工程需要对每一个页码对应的url依次发起请求,然后通过对应的解析方法进行作者和段子内容的解析. 实现方案: 1.将每一个页码 ...
随机推荐
- 配置远程maven仓库自己的步骤
---恢复内容开始--- 1.首先在远程服务器配置jdk.maven环境,这个可以在网上找 2.Nexus 安装与配置.这个见网上博客(https://blog.csdn.net/lewis_007/ ...
- ppm\pgm格式
PGM 是便携式灰度图像格式(portable graymap file format),在黑白超声图像系统中经常使用PGM格式的图像.文件的后缀名为".pgm". PGM格式图像 ...
- .net验证控件,导航控件
一.客户端验证(用户体验,减少服务器端压力) 二.服务器端验证(防止恶意攻击,客户端js很容易被绕过) 验证控件:RequiredFieldValidator:字段必填:RangeValidator: ...
- Crashing Robots - poj 2632
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8352 Accepted: 3613 Description In ...
- Sql Server 查询一段日期内的全部礼拜天
/* 查询一段日期内的全部礼拜天 @startdate 開始日期 @enddate 结束日期 */ declare @startDate datetime declare @endDate datet ...
- Linux 在不重启的情况下识别新挂载的磁盘
在使用 Linux 时,有时候会因为初始时磁盘空间分配估计不足,使用中需要将挂载点扩容的情况,这就需要我们挂载新的磁盘.但是如果我们在 Linux 运行过程中挂载磁盘, Linux 又不能在不重启的情 ...
- Win7系统CMD命令提示符输入中文变乱码怎么办
Win7系统下经常使用CMD命令提示符进行很多操作,发现Win7旗舰版系统在CMD命令提示符不能输入文字,输入的中文字都变成乱码,这是怎么回事呢?本文将提供Win7系统CMD命令提示符输入中文变乱码的 ...
- [Android] 拍照、截图、保存并显示在ImageView控件中
近期在做Android的项目,当中部分涉及到图像处理的内容.这里先讲述怎样调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法. PS:作者购买 ...
- An Ordinary Game(简单推导)
An Ordinary Game Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement There ...
- 九度OJ 1346:会员积分排序 (排序)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:967 解决:413 题目描述: 元旦佳节快到了,超市A想要给会员一些奖品.但是奖品有限,所以它需要给这些会员做一个排序,然后将名单输出来.排 ...