前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP各种特性总览

HTTP各种特性总览

作者头像
Dreamy.TZK
发布2020-08-14 09:40:29
2760
发布2020-08-14 09:40:29
举报
文章被收录于专栏:小康的自留地小康的自留地

CORS跨域请求的限制与解决

在返回数据时设置头信息即可,例如:

代码语言:javascript
复制
const http = require("http");
http.createServer(function (req, res) {
    res.writeHead(200,{
    	"Access-Control-Allow-Origin":'*'
    })
}).listen(8888);

跨域是由浏览器限制的,浏览器允许imgscriptlink等标签访问不同域的内容。

将其中的*设置为某个域名,那么则标识只允许某个域名可以访问。但是只能一个域名,如果需要多个域名需要增加服务器逻辑进行判断。

CORS跨域限制以及与请求验证

当请求头中包含一些自定义的头信息,那么默认情况下同样会收到跨域限制,因此需要设置允许的头:

代码语言:javascript
复制
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 任何一个节点都不可以缓存

设置缓存

代码语言:javascript
复制
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的使用

image-20200812201958071
image-20200812201958071

验证头

  • Last-Modified 上次修改时间,配合If-Modified-Since或者If-unModified-Since使用
  • Etag 数据签名,配合If-Match或者If-Non-Match使用,对比资源的签名判断是否使用缓存。

Cookie和Seesion

Cookie包含的属性

  • max-ageexpires设置过期时间
  • Secure只在https的时候发送
  • HttpOnly无法通过document.cookie访问
代码语言:javascript
复制
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长连接

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • CORS跨域请求的限制与解决
  • CORS跨域限制以及与请求验证
  • 缓存头Cache-Control的含义和使用
    • 设置缓存
      • 重新验证
        • 其他
        • 缓存验证Last-Modified和Etag的使用
          • 验证头
          • Cookie和Seesion
          • HTTP长连接
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档