HTTP小结之四《完结》:URL,Cookie

整理一下HTTP的基础知识:(四):URL,Cookie

最后说下URL和Cookie可能你说还有session,但标准上来说是没有定义session,只不过服务器软件形成了共识,都做了Session机制。

简单点说就是基于一个Cookie,做为KEY,然后存放一些数据到里面。这样也方便去取。

URL

URL的
格式为:protocol :// hostname[:port] / path / [;parameters][?query][#fragment]

  • Protocol 协议
  • Hostname 主机名
  • Port 端口
  • Path 路径
  • Parameters 选项
  • ?query 查询
  • #fragment 片段(书签)

这里简单写个javaScript表达式方法测试是不是HTML的URL(没太多验证,COPY需谨慎)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function execUrl(url){
var rtn = false;
var strRegex = "^(https://|http://)"
+ "([^:/]+)"
+ "(:[0-9]{1,4})?"
+ "([^?#]*)"
+ "([^#]*)"
+ "(.*)$";
var regUrl = new RegExp();
regUrl.compile(strRegex);
if (regUrl.test(url)) {
rtn={
'protocol':RegExp.$1,
'host':RegExp.$2,
'Port':RegExp.$3,
'Path':RegExp.$4,
'query':RegExp.$5,
'fragment':RegExp.$6
}
}
return rtn;
}
//test
console.log(execUrl("http://www.xdnote.com:80/js5/main.php?sid=DDKQwEHHSYSSdxkkyYHHHAdmHFGOezJD#module=outlink"));
阅读更多

HTTP小结之三:请求响应头

先说明一下语法符号

  • SP = 空格
  • GRLF = 结束+换行

HTTP请求语法

1
2
3
4
5
6
Request-Line 
*((general-header
|request-header
|entity-header) GRLF)
GRLF
[message-body]

第一行为Request-Line语法为:

1
Method SP Request-URI SP HTTP-Version CRLF

第二三四行有点正则味道,*说明是可选的,不一定有

首先是由general-header,request-header,entity-header组成,三个header。

关于这些header详细往下说明。

阅读更多

HTTP小结之二:状态码

整理一下HTTP的基础知识:(二):响应状态码

响应码,整理了一份:

一般来说,我们平常见的响应码就那么几个,200/304/404/500等,一般是浏览器自身做的时候觉得体验不好,把一些响应码特殊处理了,并没有支接让你看到。

响应码主要分为以下5类

码段 类型
1XX 消息
2XX 成功状态
3XX 转向
4XX 请求错误
5XX 服务器内部错误

1XX

1XX状态码 是比较少用的,暂时不做多讲

状态码 类型 说明
100 Continue 需要继续处理
101 Switching Protocols 切换协议,这时一般会响应一个Upgrade响应头。
阅读更多

HTTP小结之一:请求方法与命令调试

整理一下HTTP的基础知识:(一):请求方法与命令调试

HTTP小结之一:请求方法与命令调试

天天都与HTTP交流,其实基本的东西也是应该了解了解的,这里主要参数IFEF的介绍整理一下,由于内容实在太多,就说下常用的。

总是听说HTTP有两个版本 HTTP1.0和HTTP1.1,其实即使是HTTP1.1也已经是老掉牙的版本了(1999),平时去Google搜个相关东西时,有的文章就很正经的来一句”这是HTTP1.1才支持的属性“,说的是不假,但就不能把一些无用的信息省一点吗,目前的客户端比如N年前的IE6与服务端,各种Apache,IIS等,有哪个还不支持1.1么?老的版本想找也找不到了。

本文小结一下HTTP的方法和调试。

请求方法

  • GET
  • POST
  • PUT
  • TRACE
  • OPTIONS
  • CONNECT
  • HEAD
  • DELETE
  • TRACK

有人可能见过这些方法:

  • PROPFIND
  • PROPPATCH
  • MKCOL
  • COPY
  • MOVE
  • LOCK
  • UNLOCK

这些谅是WebDav新定义的,WebDav是HTTP的扩展,也继承了HTTP,主要用于网络办公。面向对象讲究个继承,HTTP就像是个基类,WebDav就是继承了HTTP,进行了不少实例扩展,WebDav的实例可以实现一些类似FTP,SSH等类似的功能。

但一般实现一些高级功能可以再扩展WebDav去实现,

有实现了WebDav的具体的子类有 CalDav日历,CardDav名片,GroupDav群组.有些厂家定制了自己的专用服务器或Apache等服务器的扩展模块等去实现。当然,浏览器上的应用可能不一定支持这些方法,最简单的实现方法是tennet,一般是通过桌面客户端或者HTTP服务端底层来调用实现。

阅读更多