![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
HTTP
purple_lumpy
先,找一个方向,然后,收拾收拾好,一步一步来
展开
-
HTTP请求的大概流程
当在浏览器中,输入一个 URL,HTTP请求及返回的过程时间节点如下。- 为什么先做redirect,因为浏览器很可以已经记录过这个要访问的地址以及永久跳转成的一个新地址,所以一开始浏览器需要判断,是否需要redirect 以及redirect 到哪里。- 第二步是看缓存。因为请求的资源可能已经缓存过了,如果有缓存那么直接从缓存中获取数据,否则第三步DNS解析。- DNS 解析即把域名...原创 2019-05-18 17:19:22 · 178 阅读 · 0 评论 -
HTTP Redirect
Redirect 是指,当我们通过URL 访问一个资源的时候,我们可能会发现,这个资源已经不在这个URL 所指向的位置了。这个时候,服务器要告诉浏览器/客户端,要请求的资源在什么地方,然后浏览器/客户端再去重新请求那个地方,这样的话,就可以拿到资源。const http = require('http')const fs = require('fs')const zlib = requi...原创 2019-06-22 11:37:35 · 2548 阅读 · 0 评论 -
HTTP 数据协商
数据协商,即客户端发送给服务端一个请求的时候,客户端会申明希望拿到的数据的格式以及数据相关的一些限制,而服务端会根据这些请求中表示的想要的限制,来进行判断要返回一个怎样的数据。分类- 请求 Accept 通过 “Accept” 申明希望的数据的格式 通过 “Accept-Encoding” 申明希望的数据的编码方式(主要用来限制服务端如何进行数据的压缩) 通...原创 2019-06-22 11:17:42 · 187 阅读 · 0 评论 -
Cookie
cookieCookie 是服务端返回数据的时候,通过 Set-Cookie 这个 header,设置到浏览器中,并保存在浏览器中的内容。浏览器保存了这个Cookie 后,下次在同域的请求中,就会带上这个Cookie。Cookie 是键值对的形式保存的,可以设置多个。cookie 属性max-age 和 expires 设置过期时间Secure 只在 https 的时候发送...原创 2019-06-17 20:42:09 · 134 阅读 · 0 评论 -
缓存验证 Last-Modified & Etag
上篇文章我们知道,当我们给Catch-Control 设置了 no-catch 后,每次浏览器对这个资源的请求时,都会到服务器端进行资源验证,验证完之后,如果确定这个资源可以使用缓存,浏览器才会读取本地的缓存。下面是浏览器请求数据过程中关于缓存的步骤。进行数据验证,主要是有两个Header: Last-Modified 与 Etag .Last-Modified 即上次修改时间。...原创 2019-06-16 18:25:35 · 998 阅读 · 0 评论 -
缓存头 Cache-Control 的含义和使用
本篇我们来写一下HTTP 中的缓存,即Cache-Control 。Cache-Control 的可缓存性(指明哪些地方可以缓存返回的数据): - public (HTTP 返回的时候在Heaher 中设置Cache-Control 的值为‘public’。它代表,这个HTTP 请求它返回的内容所经过的任何路径中,包括中间的一些HTTP 代理服务器以及发出请求的客户端浏览器,都可以进行对...原创 2019-06-16 17:38:17 · 19097 阅读 · 1 评论 -
HTTP 长连接
HTTP 请求是在TCP连接上进行发送的。而TCP的连接分为:长连接,短连接。长连接:HTTP 请求发送的时候,要先去创建一个TCP连接,然后在这个TCP连接上,把HTTP 的请求发送并接受完。一次HTTP请求结束了,浏览器就会跟服务端商量是否关闭TCP 连接。如果不关闭,TCP 连接一直开着,会有一定的消耗,但如果还有请求,可以直接在这个TCP 上发送(不需要经过三次握手这样的连接的消耗);...原创 2019-06-20 17:44:19 · 16331 阅读 · 0 评论 -
CORS 跨域请求 - 2
前面一篇,我们通过在服务器端使用了 header 中'Access-Control-Allow-Origin' 使得跨域请求可以获取数据。那么是不是使用了这个header 就可以使得所有跨域请求都成功呢?否!下面我们就来讲一下,浏览器跨域请求的一些限制。首先,我们把之前的html 页面中ajax 请求用fetch 写一下。如下。<!DOCTYPE html><...原创 2019-05-29 18:35:10 · 191 阅读 · 0 评论 -
CORS 跨域请求 - 1
首先我们来写两个简单的服务器:server.js 如下const http = require('http')const fs = require('fs')http.createServer(function (request, response) { console.log('request come', request.url) const html = f...原创 2019-05-29 13:56:14 · 181 阅读 · 0 评论 -
HTTP协议的发展历史
第一个定稿的HTTP协议 HTTP/0.9- 只有一个命令 GET- 没有HEADER等描述数据的信息- 服务器发送完毕内容,就关闭TCP连接第二个HTTP 版本 HTTP/1.0- 增加了很多命令- 增加了status code (描述服务端处理请求的状态的)和 header- 多字符集支持、多部分发送、权限、缓存等HTTP/1.1(在HTTP1.0 ...原创 2019-05-18 18:09:33 · 922 阅读 · 0 评论 -
HTTP 客户端
我们最常用的HTTP客户端就是网页浏览器(它除了是HTTP 客户端,还有其他功能如解析网页等)了。还有一个常用的 HTTP 客户端 就是 curl (Mac系统自带了)我们在终端上输入curl baidu.com就会显示下面的信息:它返回了一个meta, 而这个meta 是告诉我们要重定向到 www.baidu.com那我们再curl www.baidu.c...原创 2019-05-25 11:18:23 · 518 阅读 · 0 评论 -
HTTP 报文,方法,CODE
报文如下。注意一下,是在首行也就是其实行,指定了HTTP 的版本。HTTP 方法用来定义对资源的操作常用的有 GET, POST等从定义上来讲它是有各自的语义的HTTP CODE定义服务器对请求处理的结果各个区间的CODE 有各自的语义(100-199 操作要持续进行,接下来要持续做一些事情请求才能返回;200-299 操作是成功的;300-399 操...原创 2019-05-20 10:48:10 · 223 阅读 · 0 评论 -
URI, URL, URN
URI 其实是包含了 URL 和 URN 的统一的定义。URI - Uniform Resource Identifier / 统一资源标志符。用来唯一标识互联网上的信息资源。包含 URL,URN。URL- Uniform Resource Locator / 统一资源定位器。一个URL例子:http://user:pass@host.com:80/path?query=str...原创 2019-05-19 09:38:43 · 109 阅读 · 0 评论 -
HTTP CSP
Content Security Policy (CSP)https://developer.mozilla.org/zh-CN/docs/Web/Security/CSP它体现在:- 限制资源获取- 报告资源获取越权限制方式- default-src 限制全局- 制定资源类型(资源类型如,connect-src, img-src, manifest-src, ...原创 2019-06-23 12:12:40 · 713 阅读 · 0 评论