超文本传输协议(HyperText Transfer Protocol)balabalbal....
抛开维基上的标准解释,用我的话来表达目前我对HTTP的理解。究其本质,他是一个协议,也就是说使用它的人都得按照他的规则不然不认。这就有点像你用英语那你就得按照英语规范中的那一套语法来使用。
HTTP请求包括哪些部分?
# 请求行(请求动作,路径(没有路径默认 / ),协议/版本)
# 请求头(Host、Accepte-Language等)
# 空行
# 其他消息体
请求行的例子 "GET / HTTP/1.1" "GET /iamges/logo.gif/ HTTP/1.1",注意路径前后的空格;在HTTP/1.1中,除Host外的其他请求头都是可选的。其他消息体可由请求客户端自定。
一个完整的请求例子
GET / HTTP/1.1
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept-Language: en
Sam: xxx
HTTP响应包括哪些部分?
Status-Line
gereral-header
Cache-control
Connection
Date
...
response-header
Accept-ranges
Server
Vary
...
entity-header
Allow
Content-Encoding
Content-length
...
CRLF
Message-body
以上来自w3标准文档,维基上也没看到翻译好的统一格式。
一个例子:
HTTP/ 1.1 200 OK
Content-Length:3059
Server:GWS/2.0
Date:Sat, 11 Jan 2003 02:44:04 GMT
Content-Type:text/html
Cache-control:private
Set-Cookie:PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqyX9j;expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Connection:keep-alive
用方方的话总结来讲就是
1 协议/版本号 状态码 状态解释
2 Key1: value1
2 Key2: value2
2 Content-Length: 17931
2 Content-Type: text/html
3
4 要下载的内容
第三部分的空格不能少。
如何用浏览器开发工具查看请求和响应内容
控制台步骤:打开chrome浏览器控制台切换到Network栏,在地址栏输入url打开网页,看到Network栏的请求和响应流,随便点击一个就可以看到类似上图的界面。
在headers一栏中,Response headers和Request heads右侧有view source,点击即可看到原滋原味的浏览器请求头和服务器响应体,即是上面总结中说到的第一和第二部分;点击Response或者preview可以看到总结中说到的第四部分。
curl命令
curl transfer a URL(发送一个URL)
参数太多,详见explainshell,下面提一些上课中用到的参数。
-s silent 关闭命令中的进度条提示和不展示错误信息
-v verbose 把这条命令变唠叨(瞬间找回侠盗车手的感觉),使用 > * < 符号详细告诉你这条命 令做了哪些事。> 发送的消息, < 收到的消息,* 提示信息
-H 一定要大写,一些客服端自定义信息
-X 定义请求动作,默认get
-d data 在post请求中要发送到服务器的具体信息
网友评论