先来看看一个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/

User-Agent:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

请求行

组成: 请求方法 空格 请求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请求解析--从一个请求开始的更多相关文章

  1. nginx js、css多个请求合并为一个请求(concat模块)

    模块介绍 mod_concat模块由淘宝开发,目前已经包含在tengine中,并且淘宝已经在使用这个nginx模块.不过塔暂时没有包含在nginx中.这个模块类似于apache中的modconcat. ...

  2. robotframework-post request请求携带上一个请求返回的cookie

    公司的接口服务需要先登录,获取服务端的cookie后,在后续的请求中携带这个cookie才能够访问 在尝试用RF工具进行自动化接口测试时,发现先访问登录接口之后,接着请求其他接口时没有自动携带上次请求 ...

  3. Jmeter之一个请求获取上一个请求的参数

    刚开始有这个需求,网上都是一些使用正则表达式的例子,苦于自己看不好正式的表达式,且响应结果稍微变一下,自己就不会写了,于是谷歌上各种搜,也阅读官网上文档,后来发现一个好的插件 Json path Ex ...

  4. 从零开始写一个Tomcat(叁)--请求解析

    挖坑挖了这么长时间也该继续填坑了,上文书讲到从零开始写一个Tomcat(贰)--建立动态服务器,讲了如何让服务器解析请求,分离servlet请求和静态资源请求,读取静态资源文件输出或是通过URLCla ...

  5. Android之三种网络请求解析数据(最佳案例)

    AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...

  6. Nginx重要结构request_t解析之http请求的获取

    请在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 本文主要参考为<深入理解nginx模块开发与架构解析>一书,处理用户请求部分,是一篇包含作者理解的读书笔记.欢迎指正,讨论. ...

  7. Jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则表达式提取器

    首先在线程组下添加两个HTTP请求, 添加好两个HTTP请求后,在每个HTTP请求下添加一个查看结果数 在第一个HTTP请求下添加正则表达式提取器 在第一个HTTP请求添加好IP地址,路径,端口号,协 ...

  8. OkHttp上传文件,服务器端请求解析找不到文件信息的问题

    长话短说,不深入解释了,官方给的上传案例代码: private static final String IMGUR_CLIENT_ID = "..."; private stati ...

  9. scrapy递归解析和post请求

    递归解析 递归爬取解析多页页面数据 每一个页面对应一个url,则scrapy工程需要对每一个页码对应的url依次发起请求,然后通过对应的解析方法进行作者和段子内容的解析. 实现方案: 1.将每一个页码 ...

随机推荐

  1. Android的View 事件传递

    欢迎转载,请附出处: http://blog.csdn.net/as02446418/article/details/47422891 1.基础知识 (1) 全部 Touch 事件都被封装成了 Mot ...

  2. hdu 4454 Stealing a Cake(计算几何:最短距离、枚举/三分)

    题意:已知起点.圆.矩形,要求计算从起点开始,经过圆(和圆上任一点接触即可),到达矩形的路径的最短距离.(可以穿过园). 分析:没什么好的方法,凭感觉圆上的每个点对应最短距离,应该是一个凸函数,用三分 ...

  3. 使用WebStorm将项目部署到IIS

    在WebStorm中打开项目,通常WS会启动一个虚拟服务器并使用如下地址访问 但这样会有一个问题,在局域网内的其他设备,比如手机和其他电脑是不能访问这个地址的,这样就给开发和调试带来了不便.本人也是惭 ...

  4. Oracle 技术支持之现场优化的思维路径

    性能调优是每个DBA职业生涯中都能遇到的任务     大到世界五百强的核心系统,小到乡镇企业的进销存,几乎都会有要调优的时候     面对形形色色的系统,林林总总的需求,调优的手段也是丰富多彩 定位问 ...

  5. APPLE ID随意转区到US或者HK.不需要信用卡

    看到论坛有封釉想去US 或者HK 的商店下载大陆商店没有的APP.(比如 Tumblr) 但是现在在手机上或者是网页管理apple id 更改地区,需要输入付款信息. 现在教大家利用旧版的icloud ...

  6. Swift开发图解入门

    <论语·卫灵公>有一段经典对白:『子贡问为仁.子曰:工欲善其事,必先利其器. --』. 对于一个程序猿来说,好的工具不意味着一定能产生优质的代码.可是好的工具对提升开发效率的作用还是不言而 ...

  7. cordova ios升级插件

    org.ssgroup.sope.cordova.upgrade 支持强制升级与选择升级 插件已经开源在https://github.com/shenshouer/org.ssgroup.sope.c ...

  8. xpath 获取父级,和同级

    XPath轴(XPath Axes)可定义某个相对于当前节点的节点集: 1.child 选取当前节点的所有子元素 2.parent 选取当前节点的父节点 3.descendant 选取当前节点的所有后 ...

  9. Django安装和启动

    1.django安装 在http://www.djangoproject.com/download/这个网站上可以下载django的最新版本.在下载时,要注意django版本和本机安装的Python版 ...

  10. String、StringBuilder、 StringBuffer 深入分析 源代码解析

    java学习有一段时间了.但学习的东西都是框架等东西,java基础知识有点遗忘.所以重温一下java基础知识.写写文章里面有错的希望大家指正共同进步~~ 一.String 大家常常会说使用" ...