http :请求响应报文-web服务-ajax-cors跨域

node:http 协议:请求响应报文-web服务-url与对象的转化-ajax-cors跨域

1 梳理重点

1.1搭建服务

注意:

① 站点创建完成后,需要通过node命令启动

② 创建站点的代码如果发生变化,需要重启服务

③ 当用户输入域名:端口号/a/b,会请求到createServer接收的回调函数,回调函数需要给予响应,如果没有响应那么会一直请求下去

④ response.end():end 传入的信息全部在该对象内

const http = require("http");// 内置模块
const url = require("url");// 内置模块
// request:请求对象,与请求相关的信息全部在该对象内。
const server = http.createServer(function(request,response){
   
    // request.url; 请求的网址 
  //假如:http://127.0.0.1:8090/a/b/c?one=1  那么req.url === /a/b/c?one=1
    // request.url可以帮助我们获得资源: url.parse("/a/b/c?one=1") ====>{pathname:"/a/b/c",query:"one=1"}
    const pathname = url.parse(request.url).pathname;//  /a/b/c
    if(pathname === "/a/b/c"){
   
        // 200:成功  404:页面找不到 500:服务端异常   304:缓存
        // 这个状态码是可以自定义的。
        response.writeHead(200,{
   
            // 文件是一个html类型,编码为utf-8
            // "content-type":"text/html;charset=utf-8;"
            // "content-type":"text/plain;charset=utf-8;"
        })
        response.end();
    }   
})
// http 默认端口号80 ,https默认端口号443.
// 127.0.0.1:指定访问该站点的IP,如果省略则不限制
// 第三个参数是一个回调函数,当服务搭建完成以后会执行。
server.listen(80,"127.0.0.1",function() {
   
  console.log("站点创建成功");
})

1.2 fs

const fs = require("fs");
fs.readFile("请求地址",function(err,result){
   result.toString()});// 异步读取   
const result = fs.readFileSync("请求地址");// 同步读取,将结果直接返回
const rs = fs.createReadStream("请求地址");
rs.on("data",function(thunk){
   });// 第次读取64k
rs.on("end",function(){
   });// 寻数据接收完毕之后执行

fs.writeFile();// 异步读取
fs.writeFileSync();// 同步读取
const ws = fs.createWriteStream("");
ws.on("open",function(){
   });
ws.write();
ws.on("close",function(){
   });
ws.close();

fs.unlink()// 删除
fs.unlinkSync()// 同步删除

fs.rename();// 实现重命名或移动 
fs.renameSync();// 同步实现重命名或移动 

fs.mkdir();// 创建文件夹目录 
fs.readdir();// 读取文件夹的信息
fs.rmdir();// 移除文件夹

fs.exists();// 判断是否存在
fs.stat();// 判断是否为一个文件或目录。

1.3 模块化

将一个大的项目,分成若干个模块,在node中,每一个JS即是一个模块,优化之前的代码

// 获取当前时间:封装到一个名字为utils.js的模块当中。
// 2012/02/09    utils.end(res,1,"添加成功")
// 比如: res.end(JSON.stringify({ok,mag}))
module.exports.end = function(res,ok=-1,msg="网络连接错误"){
   
    res.end(JSON.stringify({
   
        ok,
        msg
    }))
}

2 HTTP 协议介绍

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

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

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

3 请求报文

HTTP 请求报文包括四部分

  • 请求行 请求方式 协议以及版本 http1.1 url(资源定位符,俗称网址)
  • 请求头 传递 token session cookie
  • 空行
  • 请求体 传递数据。(post:添加 put修改 delete删除) get(获取) http://www.baidu.com?a=1&b=2
// 请求行
GET https://www.baidu.com/?tn=80035161_1_dg HTTP/1.1
// 请求头
Accept: text/html, application/xhtml+xml, image/jxr, */*
Accept-Language: zh-Hans-CN,zh-Hans;q=0.5
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: www.baidu.com
Connection: Keep-Alive 
Cookie: COOKIE_SESSION=0_0_0_1_0_0_0_0_0_0_0_0_0_0_0_0_0_0_1606723864%7C1%230_0_1606723864%7C1; BD_UPN=1126314751; BD_HOME=1; BAIDUID=A613B163177AE92B8F2EA3C53D3B8227:FG=1; BIDUPSID=3A8FF4428ACCEE4CB183D3184E180560; PSTM=1587224822; BDRCVFR[k2U9xfnuVt6]=mk3SLVN4HKm; H_PS_PSSID=31253_26350; BA_HECTOR=2g040k8k0184ak216k1g9mdhd0r
// 空行

// 请求体:请求的数据。

/*1、请求行*/
// * GET:请求的方式
// * https://www.baidu.com/?tn=80035161_1_dg:  url(资源定位符,俗称网址)
// * HTTP/1.1  : 请求的协议以及版本号。

/*2、请求头*/
// Accept:指定了接收资源的类型。
// Accept-Language: zh-Hans-CN,zh-Hans;q=0.5
// Accept-Encoding: gzip, deflate。
// User-Agent:将浏览器的信息进行说明。代理。
// Host:主机名
// Connection: Keep-Alive  指定连接的状态一般值 为 Keep-Alive(长连接) close(关闭)
  • GET http://localhost:3000/hello.html HTTP/1.1:GET请求,请求服务器路径为http://localhost:3000/hello.html,?后面跟着的是请求参数(查询字符串),协议是HTTP 1.1版本
  • Host: localhost:3000:请求的主机名为localhost,端口号3000
  • Connection: keep-alive:处理完这次请求后继续保持连接,默认为3000ms
  • Pragma: no-cache:不缓存该资源,http 1.0的规定
  • Cache-Control: no-cache: 不缓存该资源 http 1.1的规定,优先级更高
  • Upgrade-Insecure-Requests: 1:告诉服务器,支持发请求的时候不用 http 而用 https
  • User-Agent: Mozilla/5.0 (…:与浏览器和OS相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的
  • Accept: text/html,…:告诉服务器,当前客户端可以接收的文档类型。q 相当于描述了客户端对于某种媒体类型的喜好系数,该值的范围是 0-1。默认为1
  • Accept-Encoding: gzip, deflate, br:支持的压缩格式。数据在网络上传递时,服务器会把数据压缩后再发送
  • Accept-Language: zh-CN,zh;q=0.9:当前客户端支持的语言,可以在浏览器的工具选项中找到语言相关信息

4 响应报文

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值