HTTP各种特性总览
时间:2022-07-23
本文章向大家介绍HTTP各种特性总览,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
CORS跨域请求的限制与解决
在返回数据时设置头信息即可,例如:
const http = require("http");
http.createServer(function (req, res) {
res.writeHead(200,{
"Access-Control-Allow-Origin":'*'
})
}).listen(8888);
跨域是由浏览器限制的,浏览器允许
img
、script
、link
等标签访问不同域的内容。
将其中的*
设置为某个域名,那么则标识只允许某个域名可以访问。但是只能一个域名,如果需要多个域名需要增加服务器逻辑进行判断。
CORS跨域限制以及与请求验证
当请求头中包含一些自定义的头信息,那么默认情况下同样会收到跨域限制,因此需要设置允许的头:
const http = require("http");
http.createServer(function (req, res) {
res.writeHead(200,{
"Access-Control-Allow-Origin":'*',
//设置允许的请求头
"Access-Control-Allow-Headers":'X-Test-Cors',
//设置允许的请求方法
"Access-Control-Allow-Methods":'POST,PUT,Delete',
//设置最长时间,即1000S内无需再次发送预请求
"Access-Control-Max-Age":'1000',
})
}).listen(8888);
缓存头Cache-Control的含义和使用
-
public
任何代理服务器都可以对数据进行缓存 -
private
只有发起请求的浏览器可以缓存 -
no-cache
任何一个节点都不可以缓存
设置缓存
const http = require("http");
http.createServer(function (req, res) {
res.writeHead(200,{
"Cache-Control":'max-age=20',
})
}).listen(8888);
关于刷新缓存:可以文件名后加入根据内容生成的哈希码。
重新验证
-
must-revalidate
如果缓存已经过期,需要向源服务端重新获取数据,不能直接使用 -
proxy-revalidate
缓存服务器必须在过期时在源服务器重新请求
其他
-
no-store
本地和代理不可以缓存 -
no-transform
不可以随便改动返回的内容
缓存验证Last-Modified和Etag的使用
验证头
-
Last-Modified
上次修改时间,配合If-Modified-Since
或者If-unModified-Since
使用 -
Etag
数据签名,配合If-Match
或者If-Non-Match
使用,对比资源的签名判断是否使用缓存。
Cookie和Seesion
Cookie包含的属性
-
max-age
和expires
设置过期时间 -
Secure
只在https的时候发送 -
HttpOnly
无法通过document.cookie访问
const http = require("http");
http.createServer(function (req, res) {
res.writeHead(200,{
"Cache-Control":'max-age=20',
// 设置过期时间2s的cookie
"Set-Cookie":'id=123;max-age=2',
"Set-Cookie":'abc=456',
})
}).listen(8888);
Cookie存在过期时间,如果不设置过期时间,那么过期时效为浏览器关闭时。 为主域设置Cookie后所有子域都可以使用Cookie。 Session通常的使用方法时,通过cookie设置session。
HTTP长连接
- 各种读入方式速度比较
- 美团NLP实习面试总结一 基本知识4 数据结构二 NLP相关技术1 LSTM2 介绍实体链接与实体映射3 解释随机游走的原理及作用4 命名实体识别
- 【下载】苹果发布Turi Create机器学习框架,5行代码开发图像识别
- codevs 4163 hzwer与逆序对
- ASP.NET Core提供模块化Middleware组件
- CSS预处理器的对比 — sass、less和stylus
- Gensim实现Word2Vec的Skip-Gram模型简介快速上手对语料进行分词使用gensim的word2vec训练模型
- React第三方组件4(状态管理之Reflux的使用②TodoList上)
- 机器学习(六)Sigmoid函数和Softmax函数1 Sigmoid函数2 Softmax函数
- React第三方组件4(状态管理之Reflux的使用①简单使用)
- React第三方组件3(状态管理之Flux的使用⑤异步操作)
- 使用yo-get下载视频网站视频或其
- React多页面应用3(webpack4 多页面实现)
- 洛谷P2345 奶牛集会
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android编程使用LinearLayout和PullRefreshView实现上下翻页功能的方法
- R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间
- Android 中两个Activity 之间的传值问题
- 学习使用Material Design控件(二)使用DrawerLayout实现侧滑菜单栏效果
- Android Spinner列表选择框的应用
- Android实现截屏方式整理(总结)
- 用RSHINY DASHBOARD可视化美国投票记录
- Android 侧滑关闭Activity的实例
- Android 两个Fragment之间的跳转和数据的传递实例详解
- Android编程实现保存图片到系统图库的方法示例
- Android自定义单选多选下拉列表的实例代码
- R语言POT超阈值模型在洪水风险频率分析中的应用研究
- Android开发之ToggleButton实现开关效果示例
- Android使用Circular Reveal动画让页面跳转更炫酷
- 学习使用Material Design控件(三)使用CardView实现卡片效果