-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HTTP 协议原理与实践 #16
Comments
HTTP 协议基础及发展史5层网络模型介绍低三层
传输层
应用层
HTTP 协议的发展史HTTP/0.9
HTTP/1.0
HTTP/1.1
HTTP/2
HTTP的三次握手URI 、URL、URNURI
URL
URN
HTTP 报文格式HTTP 方法
HTTP CODE
创建一个简单的 web 服务// server.js
const http = require('http')
http.createServer(function (request, response) {
console.log('request come', request.url)
response.end('123')
}).listen(8888) |
HTTP 各种特性总览CORS 预请求允许的方法:GET、HEAD、POST。
缓存 Cache-Control可缓存性:public(代表 http 经过的任何地方都能进行缓存)、private(只有浏览器才可以缓存)、no-cache(任何节点都不缓存,本地可以使用缓存但是要等服务器验证之后)。
缓存验证Last-Modified和Etag的使用last-Modified:
const etag = request.headers['if-none-match']
if (etag === '777') {
response.writeHead(304, {
'Content-Type': 'text/javascript',
'Cache-Control': 'max-age=2000000, no-cache',
'Last-Modified': '123',
'Etag': '777'
})
response.end('')
} cookie和sessionCookie:
HTTP 长连接如何保证服务创建的是长连接而不是短链接呢:在 Response Headers 中有一个头 Connection: Keep-Alive 数据协商分类:请求、返回。
Redirect如果客户端向服务器请求一个资源,但是这个资源目前不在该路径下,服务器就该告诉客户端应该去哪里请求资源。 response.writeHead(302, {
'Location': '/new'
})
response.end('') 302 的语义代表临时跳转,301 代表你确定跳转的路径表永久跳转,302每次都需要经过服务器去改变路径而301会让浏览器去记住改变。 Content-Security-Policy (内容安全策略)作用:
|
总结内容:
|
浏览器输入 URL 后 HTTP 请求返回的完整过程:
The text was updated successfully, but these errors were encountered: