HTTP协议
http是网络上传输HTML的协议,用于浏览器和服务器之间的一种通信工具。
(google浏览器提供了一套web应用调试工具,适合web开发。ctrl+shift+i即可打开Chorme开发者工具。其中Network就显示浏览器和服务器的通信。)
Network记录浏览器都干了什么。
记录代码在view source显示。
在Request Headers中
第一行:
GET / HTTP/1.1
//get表示一个读取请求,将从服务器获得网页数据,/表示URL的路径,HTTP/1.1表示采用HTTP协议版本1.1。
从第二行开始:
Host:www.aaa.com.cn //表示请求的域名
在Response Headers中:
HTTP/1.1 200 OK //200表示一个成功的响应,OK是说明。
Content-Type:text/html //指示响应的内容,这里是text/html表示HTML网页。
HTTP请求流程:
- 浏览器向服务器发送HTTP请求(GET或者POST两种方式。GET仅请求资源,POST会附带用户数据.)
响应服务器向浏览器返回HTTP响应。
响应代码:
200表示成功
3xx表示重定向
4xx表示客户端发送的请求有错误
5xx表示服务器端处理时发生了错误;
响应类型:由Content-Type指定;
3. 如果浏览器还需要继续向服务器请求其他资源。
node.js中的http
http服务器: node.js自带http模块,应用程序通过http模块中的request和response完成与http协议的交流。
request封装了HTTP请求,我们调用它就可以拿到所有请求的信息。
response封装了HTTP响应,操作response对象的方法,就可以把HTTP响应返回给浏览器。
eg: node.js实现一个HTTP服务器程序,用来返回Hello world!
'use strict';
// 导入http模块:
var http = require('http');
// 创建http server,并传入回调函数:
var server = http.createServer(function (request, response) {
// 回调函数接收request和response对象,
// 获得HTTP请求的method和url:
console.log(request.method + ': ' + request.url);
// 将HTTP响应200写入response, 同时设置Content-Type: text/html:
response.writeHead(200, {'Content-Type': 'text/html'});
// 将HTTP响应的HTML内容写入response:
response.end('<h1>Hello world!</h1>');
});
// 让服务器监听8080端口:
server.listen(8080);
console.log('Server is running at http://127.0.0.1:8080/');
我们运行程序之后,在浏览器输入http://localhost:8080,就可看到Hello world!
之后在控制台可以看到:
GET: /
GET: /favicon.ico
这是程序打印的请求信息。