http中url的组成和首部字段详解

url组成部分

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

scheme 协议方案

http #超文本转移协议,我们浏览网站都是这个
https #安全的http连接,在应用层和传输层中间加了SSL层
mailto #通过该链接可以在Internet中发送邮件
ftp #文件传输协议,传输文件
rtsp.rtspu #这个可能看见的少,是因为这是流传输,譬如视频流

user: password

权限访问的时候使用帐号密码,譬如你的网站没配置好权限,有的时候你打开的时候就需要输入帐号密码

host

简单的来说就是IP或者主机名domain

port

端口,我们访问的端口,譬如80 443 8080等等

path

访问资源的路径,相当于组件路径

params

参数,但是这个不常用,指定一些参数,譬如指定传输方式

query

查询参数,譬如我们get username=widuu&password=11111

frag

html资源片段,譬如html文档过大的时候,frag定位到html的一部分

注意

url中有特殊的字符,大家别瞎用,譬如空格是%20,所以你创建文件名称或者是拼接url的时候一定要注意,否则就404或者500了,这种还好多!

HTTP报文

基本概念

我尽量简单的讲解一下概念

报文的流动方向,是客户端在上游,就像小溪的上有源头,然后服务端在底部,我们访问主机的时候,报文是向下传输的是从客户端向下流入(inbound),当服务端返回信息的时候,方向就反了,服务端在上游,客户端在底部,然后还是向下流出(outbound),这就是报文流。
报文的组成部分

1. 起始行 (start line)

起始行和首部之间有两个字符分割(CRLF)就是回车符和换行符分割

request

起始行就是 GET / HTTP/1.1 然后其实是用\r\n结尾分割

请求报文格式

method:request-url:version
headers

body

响应报文

version:status:reason-phrase
headers

body

method #请求方法譬如GET POST HEAD DELETE
version #HTTP版本,现在基本都是1.1
status #状态码 返回响应状态码 200 404 500 503
reason-phrase #状态短语,譬如响应200的OK

2. 首部(header块)

headers #每个首部都是以:分割的,这部分是可以扩展的,你譬如Accept-Language 允许的语言

3. body(主体部分)

body #实体部分,譬如响应返回信息,返回一个图片

状态码

这个需要知道的,这个了解了可以对我们程序和判断问题上有极大的帮助,举个例子,在segmentfault上回答七牛的一个问题,一个网友说打不开网站了,显示是105 (net::ERRNAMENOT_RESOLVED)如果你懂了,瞬间就了解了,是无法解析dns服务器的地址,网络问题

整体范围 已定义范围 分 类
100-199 100 - 101 信息提示
200-299 200 - 206 成功
300-399 300 - 305 重定向
400-499 400 - 415 客户端错误
500-599 500 - 505 服务端错误

详细的解释

100 Continue 收到了请求,服务器在收到请求之后必须进行响应
101 根据客户端的指定切换首部所列的协议

200 OK 请求没问题,主题部分包含了所有请求
201 创建服务器对象的请求(PUT)
202 请求已经被服务器接收,但是未对执行动作做出响应
203 资源的副本,无法对资源有关的原信息首部做验证
204 响应报分中有若干首部和一个状态码,一般是在刷新时候出现
205 告诉浏览器清楚浏览器上所有的html的表单元素
206 范围请求成功

301 重定向,一般网站优化用的最多,说明url已经被移除了
302 与301类似,但是告诉临时定位资源以后使用老url,一般post数据返回302
303 告诉客户端用另一个url获取资源,新的url响应报文的location
304 这个说明文件未修改,使用本地的
305 通过代理来访问资源
306 未使用
307 跟301类似,根据客户端使用的Location的URL来临时定位资源

我感觉太多了大家可以查看一下状态码大全

首部字段

请求部分

Connection #譬如:Connection:keep-alive保持持久连接(以前的连接是先连接-处理事物-断开-再连接一直循环下去,keep-alive就一次连接,然后一直保持活跃状态)

Accept:/ #Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 告诉服务端客户端接收媒体类型

Accept-Encoding #告诉服务端发送编码方式Accept-Encoding:gzip,deflate,sdch

Accept-Language #Accept-Language:zh-CN,zh;q=0.8,ja;q=0.6,en;q=0.4告诉服务端支持的语言

Accept-Charset #告诉服务器能够发送哪些字符集

Cache-Control #Cache-Control:max-age=0报文传送缓存最大时间

HOST #请求服务器的主机名和端口号

Referer #当前请求URI的URL文档

User-Agent #应用程序名称

响应部分

Access-Control-Allow-Origin # Access-Control-Allow-Origin:*是否支持跨域请求

Date #Date:Wed, 26 Mar 2014 12:08:40 GMT 响应时显示报文创建的时间

Content-Encoding #响应客户端gzip Content-Encoding:gzip

Content-Type #服务器返回的主体body类型 Content-Type:text/html; charset="UTF-8"

Content-Disposition #主题文件描述Content-Disposition:inline; filename="shBrushVb.js"

Content-Length #响应主题的长度Content-Length:2741,可以判断数据是否接收完成

Transfer-Encoding #客户端可靠传输的编码,类似Transfer-Encoding:chunked都是动态处理

Server #Server:nginx/1.4.4服务器的

ETag #主体文件的标识符,譬如七牛就用这个判断文件的唯一性,而且还给了算法ETag:"FqYBjMdmt-xBSJNh4uyRQ7NpB2T3"

Via #这个是报分经过的代理和网关,例如如下我用的七牛云存储的 X-Via:1.1 lysx179:88 (Cdn Cache Server V2.0), 1.1 czdx85:8104 (Cdn Cache Server V2.0), 1.1 bjja97:10 (Cdn Cache Server V2.0)

Connection # Connection:Close 请求连接关闭,百度等网站常见

If-None-Match #如果Etag改变了,才执行

Location #服务器告诉浏览器,已经转移的位置

Vary #Vary:Cookie

Expires #主体不在有效,从原始端再次获取主体的日期和时间

Last-Modified #实体最后一次被修改日期和时间### url组成部分

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容