http 协议 & curl命令

2017-08-29  本文已影响0人  秋水涟漪

http 概述

HTTP,全称 Hypertext Transfer Protocol,超文本传输协议,是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网数据通信的基础。
此外HTTP协议是无状态协议,不会在客户端亦或服务端保存信息

请求的过程:

URL & URI

请求报文&响应报文

curl -v http://www.google.com
* Rebuilt URL to: http://www.google.com/
*   Trying 172.217.25.4...
* Connected to www.google.com (172.217.25.4) port 80 (#0)
> GET / HTTP/1.1
> Host: www.google.com
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 302 Found
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Referrer-Policy: no-referrer
< Location: http://www.google.com.hk/?gfe_rd=cr&dcr=0&ei=TR-lWYnIK7Ol8wef3YGoAQ
< Content-Length: 272
< Date: Tue, 29 Aug 2017 08:01:17 GMT
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.hk/?gfe_rd=cr&dcr=0&ei=TR-lWYnIK7Ol8wef3YGoAQ">here</A>.
</BODY></HTML>
* Connection #0 to host www.google.com left intact
请求报文-图解HTTP
响应报文-图解HTTP
Post请求

HTTP 方法

curl http://www.google.com
curl -d "test" www.example.com
## 仅HEAD
curl -I http://www.google.com
## HEAD 和 响应主体
curl -i www.sina.com 
<!---请求---> OPTIONS * HTTP/1.1 Host: www.hackr.jp 
<!---响应---> HTTP/1.1 200 OK 
             Allow: GET, POST, HEAD, OPTIONS  
             <!--- (返回服务器支持的方法)  --->

cookie

HTTP协议是无状态协议,一方面降低了服务端的内存和cpu消耗,另一方面需要其他方式记录客户端的状态。

curl -c cookies http://example.com ## 没有保存?
curl -b cookies http://example.com ## 以cookies文件为cookie发起请求
curl -b "name=xxx" www.example.com ## 以字符串里的键值对作为cookie发起请求
curl --cookie "NAME1=VALUE1; NAME2=VALUE2" www.example.com

状态码

类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错
$ curl -I www.sina.com
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 29 Aug 2017 09:19:19 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: http://www.sina.com.cn/
Expires: Tue, 29 Aug 2017 09:20:54 GMT
Cache-Control: max-age=120
Age: 25
Via: http/1.1 cnc.beixian.ha2ts4.214 (ApacheTrafficServer/4.2.1.1 [cRs f ])
X-Cache: HIT.214
X-Via-CDN: f=edge,s=cnc.beixian.ha2ts4.219.nb.sinaedge.com,c=103.37.140.12;f=Edge,s=cnc.beixian.ha2ts4.214,c=123.126.157.219

## 允许跳转
$ curl -IL www.sina.com
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 29 Aug 2017 09:20:09 GMT
Content-Type: text/html
Content-Length: 178
Connection: close
Location: http://www.sina.com.cn/
Expires: Tue, 29 Aug 2017 09:21:51 GMT
Cache-Control: max-age=120
Age: 18
Via: http/1.1 cnc.beixian.ha2ts4.214 (ApacheTrafficServer/4.2.1.1 [cRs f ])
X-Cache: HIT.214
X-Via-CDN: f=edge,s=cnc.beixian.ha2ts4.211.nb.sinaedge.com,c=103.37.140.12;f=Edge,s=cnc.beixian.ha2ts4.214,c=123.126.157.211

HTTP/1.1 200 OK
Server: nginx
Date: Tue, 29 Aug 2017 09:20:09 GMT
Content-Type: text/html
Content-Length: 601168
Connection: close
Last-Modified: Tue, 29 Aug 2017 09:16:09 GMT
Vary: Accept-Encoding
Expires: Tue, 29 Aug 2017 09:21:09 GMT
Cache-Control: max-age=60
X-Powered-By: shci_v1.03
Age: 0
Via: http/1.1 cnc.beixian.ha2ts4.205 (ApacheTrafficServer/4.2.1.1 [cHs f ])
X-Cache: HIT.205
X-Via-CDN: f=edge,s=cnc.beixian.ha2ts4.219.nb.sinaedge.com,c=103.37.140.12;f=Edge,s=cnc.beixian.ha2ts4.205,c=123.126.157.219
curl -I www.google.com
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Location: http://www.google.com.hk/?gfe_rd=cr&dcr=0&ei=XC-lWfuhNbCl8weshYbAAQ
Content-Length: 272
Date: Tue, 29 Aug 2017 09:09:48 GMT

HTTP 部首

➜  ~ curl -v www.google.com
* Rebuilt URL to: www.google.com/
*   Trying 216.58.199.4...
* Connected to www.google.com (216.58.199.4) port 80 (#0)
> GET / HTTP/1.1   ## 请求行
> Host: www.google.com ## 请求资源所在互联网域名
> User-Agent: curl/7.43.0 ## 请求的浏览器和用户代理名称等信息
> Accept: */* ## 用户能处理的媒体类型及其相对优先级
>
< HTTP/1.1 302 Found   ## 状态行
< Cache-Control: private  ## 缓存相应部首 仅向特定用户返回响应
< Content-Type: text/html; charset=UTF-8 ## 实体首部 实体主体内对象的媒体类型
< Referrer-Policy: no-referrer ## 
< Location: http://www.google.com.hk/?gfe_rd=cr&dcr=0&ei=NJymWaaXM4rM8gec9IXoBg ## 将响应接收方引导至某个与请求 URI 位置不同的资源,该字段会配合 3xx :Redirection 的响应,提供重定向的 URI。
< Content-Length: 272  ## 实体部首 实体主体部分的大小(单位是字 节)
< Date: Wed, 30 Aug 2017 11:06:28 GMT
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>302 Moved</TITLE></HEAD><BODY>
<H1>302 Moved</H1>
The document has moved
<A HREF="http://www.google.com.hk/?gfe_rd=cr&dcr=0&ei=NJymWaaXM4rM8gec9IXoBg">here</A>.
</BODY></HTML>
* Connection #0 to host www.google.com left intact
上一篇 下一篇

猜你喜欢

热点阅读