Open MrZWH opened 6 years ago
好的 HTTP 服务可以通过 CODE 判断结果
// server.js
const http = require('http')
http.createServer(function (request, response) {
console.log('request come', request.url)
response.end('123')
}).listen(8888)
允许的方法:GET、HEAD、POST。 允许的 Content-Type:text/plain、multipart/form-data、application/x-www-form-urlencoded。 其他限制:请求头限制、XMLHttpRequestUpload 对象均没有注册任何事件监听器、请求中没有使用 ReadableStream 对象。 后端返回请求中解除限制设置的头:
可缓存性:public(代表 http 经过的任何地方都能进行缓存)、private(只有浏览器才可以缓存)、no-cache(任何节点都不缓存,本地可以使用缓存但是要等服务器验证之后)。 到期:
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:
如何保证服务创建的是长连接而不是短链接呢:在 Response Headers 中有一个头 Connection: Keep-Alive
分类:请求、返回。 Accept:
X-Content-Type-Options: nosniff
这个主要是因为当没有设置返回的 Content-Type 时有些浏览器会自己预测你返回文件的类型,这样不安全,这个头就是告诉浏览器不要预测。
向服务端发送数据的时候也可以 发送 Content-Type 头告诉服务端如何解析数据。
浏览器开发者工具中勾选Preserve log可以在页面跳转后把之前的http 请求信息打印出来
如果客户端向服务器请求一个资源,但是这个资源目前不在该路径下,服务器就该告诉客户端应该去哪里请求资源。
response.writeHead(302, {
'Location': '/new'
})
response.end('')
302 的语义代表临时跳转,301 代表你确定跳转的路径表永久跳转,302每次都需要经过服务器去改变路径而301会让浏览器去记住改变。
作用:
优势:
curl -v https://test.com
内容:
浏览器输入 URL 后 HTTP 请求返回的完整过程: