IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 前端HTTP学习笔记 -> 正文阅读

[网络协议]前端HTTP学习笔记

HTTP(hypertext transport protocol)协议也叫超文本传输协议,是一种基于 TCP/IP 的应用层通信协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。

协议主要规定了两方面的内容

  • 客户端向服务器发送数据,称之为请求报文
  • 服务器向客户端返回数据,称之为响应报文

HTTP 请求报文包括四部分

  • 请求行
  • 请求头
  • 空行
  • 请求体

HTTP 响应报文也包括四个部分

  • 响应行
  • 响应头
  • 空行
  • 响应体

使用 nodejs 创建 HTTP 服务器

//1. 引入 http 内置模块
var http = require('http');

//2. 创建服务
var server = http.createServer(function(request, response){
    response.end('hello world!!');
});

//3. 监听端口
server.listen(8000);
  • request 是对请求报文的封装对象
  • response 是对响应的封装对象

获取请求

//获取请求方法
console.log(request.method);

//获取http版本
console.log(request.httpVersion);

//获取请求路径
console.log(request.url);

//获取请求头
console.log(request.headers);

//获取请求体
request.on('data', function(chunk){})
request.on('end', function(){});

设置响应

//设置状态码
response.statusCode = 200;

//设置响应头
response.setHeader('content-type','text/html;charset-utf-8');

//设置响应体
response.write('body');

//结束
response.end();

#### 创建http服务

```javascript
// 1.引入http 模块
const http = require('http');
// 2.调用方法 创建服务对象
/* 
  request :发送报文的封装对象
  response : 响应报文的封装对象
*/
const ws = http.createServer(function(request,response){
    //  响应报文
      response.end('hello 你好');
})
// 3.监听端口 启动服务
// 127.0.0.1是回环地址 在主机上发送给127开头的IP地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机,此ip地址有网无网都可以访问
// 默认端口号:80
// ctrl + c 停止服务
ws.listen(80,function(){
    console.log('服务启动,端口8000监听中');
})

获取请求信息

// 引入http模块
const http = require('http');
// 引入url模块
const url = require('url');
// 创建服务对象 
const ws = http.createServer((request,response)=>{
    // 获取请求类型
    // console.log(request.method);
    // 获取请求的URL
    // console.log(request.url);
    // 获取请求的http协议版本
    // console.log(request.httpVersion);
    // 获取url内部各部分的信息
    // 获取路径
    console.log(url.parse(request.url).pathname);
    // 获取rul中的查询字符串

    console.log(url.parse(request.url,true).query);
    // 请求头信息
    console.log(request.headers);
    // 响应报文
    response.end('hello');
})
// 监听端口
ws.listen(8001,()=>{
     console.log('端口监听ing');
})

//获取请求体
//引入http模块
const http = require('http');
// 创建服务对象
// 引入
const ps = require('querystring');
const ws = http.createServer((request,response)=>{
   
    //绑定data事件
    let body = '';
    request.on('data',chunk=>{
        body += chunk.toString();
    })
    // 3.绑定end事件
    request.on('end',()=>{
        console.log(body);
        console.log( ps.parse(body));
        response.end('body server1');
    })
})
// 端口监听
ws.listen(80,()=>{

});

获取响应信息

/ 引入http模块
const http = require('http');
// 引入url模块
const url = require('url');
// 引入fs 模块
const fs = require('fs');
const ws = http.createServer((request,response)=>{
    //  获取请求的URl中的查询路径
    let pathname = url.parse(request.url,true).pathname;
    // 网站的根目录 服务器根据请求路径找到指定文件夹下面的文件,那么这个文件夹就是该网站的跟目录
    let directory = __dirname +'public';
    // let directory = 'D:/';
    let pathName = directory + pathname;
    fs.readFile(pathName,(err,data)=>{
        if(err) {
            response.end('404 Not Found');
        } else {
            response.end(data);
        }
    })
    /* let data = fs.readFileSync(pathName);
    response.end(data); */
    /* if(pathname === '/index.html'){
        let data = fs.readFileSync(pathName);
        // 返回响应体
        response.end(data);
    }else if(pathname === '/css/app.css') {
        let data = fs.readFileSync(__dirname + '/public/css/app.css');
        // 返回响应体
        response.end(data);
    }else if(pathname === '/css/font.css') {
        let data = fs.readFileSync(__dirname + '/public/css/font.css');
        // 返回响应体
        response.end(data);
    }else if(pathname === '/js/index.js') {
        let data = fs.readFileSync(__dirname + '/public/js/index.js');
        // 返回响应体
        response.end(data);
    } */

    /* else {
        response.end('404 Not Found');
    } */
    
}) 
ws.listen(80);
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-03-11 22:34:38  更:2022-03-11 22:36:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:28:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码