nginx(七十二)nginx中与cookie相关的细节探讨

这篇具有很好参考价值的文章主要介绍了nginx(七十二)nginx中与cookie相关的细节探讨。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景知识铺垫

  nginx中与cookie相关

①  Cookie请求头内容回顾

nginx(七十二)nginx中与cookie相关的细节探讨

 cookie的形式和属性

nginx(七十二)nginx中与cookie相关的细节探讨

②   nginx获取cookie值的两种方法

nginx(七十二)nginx中与cookie相关的细节探讨

1) $http_cookie  -->获取Cookie请求头"所有值"

2) $COOKIE_flag  -->获取Cookie请求头的"某个key"

  [1]、'脱敏'场景在'日志'中只记录'非敏感'的key

  [2]、由于nginx会进行'lowcase',将所有的字符转化为'小写',推荐使用$COOKIE_lowercase形式

3) nginx也可通过'map'获取指定的cookie

4) 理解了'Cookie'请求头的构成,就理解了'方法二'的正则

nginx(七十二)nginx中与cookie相关的细节探讨

③   nginx对Cookie请求头限制

常见: 响应头中的'Cookie'头大,导致'400'报错

client_header_buffer_size

nginx(七十二)nginx中与cookie相关的细节探讨

相关参考

nginx(七十二)nginx中与cookie相关的细节探讨

If the directive is specified on the server level,\

  the value from the 'default server' can be used  --> "如何理解"?

解读: 如果指令是在'server'级别指定,则仅server为'默认server'才使用'该指令'

off:  不忽略无效的'请求头',让其'透传'过去

nginx(七十二)nginx中与cookie相关的细节探讨

nginx(七十二)nginx中与cookie相关的细节探讨

除了下划线,nginx还可能丢弃哪些请求头

重点: nginx对ignore_invalid_headers'无效头'的判定

1) 就是'英文字母'、'数字'、'连字号'和'下划线'

2) 对'下划线'进行特殊处理,下划线可以通过'underscores_in_headers'控制

特殊场景: 需要'_下划线'、'.点 --> key为 a.b'

nginx(七十二)nginx中与cookie相关的细节探讨  

 nginx(七十二)nginx中与cookie相关的细节探讨

nginx(七十二)nginx中与cookie相关的细节探讨

1) 如果'带invalid_header'且'打开ignore_invalid_headers on'配置,就会'输出日志'并忽略

2) error_log logs/error.log info;

3) error.log的'日志级别'有debug, info, notice, warn, error, crit, alert, emerg

4) 打开'error_log'的info日志,可以看到'告警'信息

client sent invalid header line: "xxxx" while reading client request headers

③  nginx对上游Set-Cookies响应头属性的处理

proxy_cookie_xxx指令的深入了解

+++++++++ "(1) 属性的处理" +++++++++

常见:'domain'、'path'、'secure'、'httponly'、'samesite'属性'修改'

涉及'3'个指令:

  [1]、proxy_cookie_domain   --> 默认是'off'

  特点:通过Set-Cookies中的'domain属性'来判断,进行'pdomain'属性的修改

  [2]、proxy_cookie_path     --> 默认是'off'

  特点:通过Set-Cookies中的'path属性'来判断,进行'path'属性的修改

  思考:正则形式是'第一个'还是'所有的'匹配

  特殊1:proxy_cookie_path / "/;secure"  --> "可以附加其它属性",使用'不规范'

  特殊2:proxy_cookie_path  '非'正则时候应该是'前缀替换',而不是'中间替换'或'全局替换'

  [3]、proxy_cookie_flags    --> 默认是'off','1.19.3'版本引入

  特点:通过Set-Cookies中的'key'来判断,进行'相关属性'的修改

注意:每个指令的'default值',以及'指令'哪个'版本'提供的

补充:只是'单向'对'上游响应头Set-Cookies'的处理

说明:两个'维度' --> 基于'cookie-av'进行'av'修改;基于'key'进行'av'修改

'多指令'附加'细节':

  1) 由于可能包含多个'Set-Cookies'响应头,nginx也可能包含多个'属性指令',以及多个'相同'指令

  2) 某一个'Set-Cookies'经过相同指令'cookie-av'属性的洗礼,第一个'属性指令'匹配即'停止'

  3) 再继续经过其它'cookie-av'处理
​
注意: 一些高级属性与'nginx版本'的适配

相关属性见该博客

+++++++++ "(2) Set-Cookies响应头的处理" +++++++++

1)	proxy_cache_valid '指令'

如果包括 'Set-Cookie' 响应头,该响应'不会'被缓存

2) 	proxy_ignore_headers

3)  proxy_hide_header

思考: 哪些'响应头字符'是合法的

备注:'点'在ASCII中是46'2e',至少是'满足RFC规范'的

案例: 响应头'eg --> "Host "'带空格,nginx处理'报错'

④    nginx处理跨域请求Cookie

+++++++++++ "细节点" +++++++++++

1) 204 '状态码'  --> add_header 'always'

HTTP 204状态码含义: 请求已经被处理,但无返回内容'No Content',这里指的是'response body'

'204'的三个应用场景:

   [1]、跨域==> 204 --> add_header 'always'

   [2]、PUT、DELET进行'资源'更新  --> '元数据更新'

   [3]、OPTIONS预检请求,正确['204'],错误['412']

   备注:Range相关的206和416状态码

 204(No-Content),服务器成功处理了请求,但不需要返回任何实体内容

3) 了解'常见报错'

重点理解各种Access-Control-Allow响应头以及跨域的报错

Nginx通过Cookie做灰度就这么简单

默认proxy_set_header Host $proxy_host导致跨域Cookie丢失

nginx 反向代理及 Cookie 的四个问题

nginx 使用 proxy_cookie_path 解决反向代理 cookie 丢失导致无法登录等问题

⑤   Cookie在nginx的应用 

思考:nginx利用cookie可以'做哪些操作'? --> 'map匹配'

场景:获取Cookie中的信息进行'限流'、'黑白'名单、'灰度'发布等

备注:后续'写一个专栏'

 nginx发送一次请求的完整过程

⑥  Cookie浏览器使用的限制

1) 不同'厂商'的浏览器,并且相同厂商的'不同版本'的浏览器,对Cookie的使用'有差异'

  备注: 涉及Cookie的'存储'和'使用'

2) 后续关注

  [1]、'CSRF'的机制

  [2]、Cookie丢失的原因   --> "抓包分析"
 
    1) 是指请求'没有携带'预期的Cookie

    2) 还是js读取不到后端返回的Set-Cookie

  [3]、session共享方案 --> memcached、tomcat自身的、redis、spring的集成方案

理解lua指令文章来源地址https://www.toymoban.com/news/detail-432162.html

到了这里,关于nginx(七十二)nginx中与cookie相关的细节探讨的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java类库中与Camera View框架相关的最佳实践指南

    使用SimpleHttpServer框架进行Java类库的网络测试和调试 原文:使用SimpleHttpServer框架进行Java类库的网络测试和调试 (techdatafuture.com)          简介:     SimpleHttpServer是一个基于Java的简单HTTP服务器框架,能够帮助开发人员进行Java类库的网络测试和调试。它提供了简单易用的

    2024年02月11日
    浏览(41)
  • 一百七十二、Flume——Flume采集Kafka数据写入HDFS中(亲测有效、附截图)

    作为日志采集工具Flume,它在项目中最常见的就是采集Kafka中的数据然后写入HDFS或者HBase中,这里就是用flume采集Kafka的数据导入HDFS中 kafka_2.13-3.0.0.tgz hadoop-3.1.3.tar.gz apache-flume-1.9.0-bin.tar.gz # cd  /home/hurys/dc_env/flume190/conf # vi  evaluation.properties ### Name agent, source, channels and sink ali

    2024年02月09日
    浏览(50)
  • 关于web3.js中与交易发送、交易签名、智能合约函数调用相关api的理解

    web3.js中有一些与交易发送、签名、合约函数调用相关的api,初学者(如me)常常搞不清什么情况下应该调用哪个,以及它们之间的区别。现将个人浅见记录如下,备忘。 sendTransaction web3.eth.sendTransaction(transactionObject [, callback]) transactionObject对象设置交易的各种参数(不包括签名r,

    2023年04月09日
    浏览(126)
  • [Python从零到壹] 七十二.图像识别及经典案例篇之OpenGL入门及绘制基本图形和3D图

    十月太忙,还是写一篇吧!祝大家1024节日快乐O(∩_∩)O 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家

    2024年02月06日
    浏览(58)
  • 深入探讨 C# 和 .NET 中 async/await 的历史、背后的设计决策和实现细节

    对 async/await 的支持已经存在了十多年。它的出现,改变了为 .NET 编写可伸缩代码的方式,你在不了解幕后的情况下也可以非常普遍地使用该功能。 从如下所示的同步方法开始(此方法是“ 同步的 ”,因为在整个操作完成并将控制权返回给调用方之前,调用方将无法执行任何

    2024年02月08日
    浏览(42)
  • 深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计

    认证和授权是安全验证中的两个重要概念。认证是确认身份的过程,用于建立双方之间的信任关系。只有在认证成功的情况下,双方才可以进行后续的授权操作。授权则是在认证的基础上,确定用户或系统对资源的访问权限。 在设计一个权限认证框架时,可以考虑以下原则:

    2024年02月12日
    浏览(37)
  • nginx(七十一)root、alias、index、try_files关系指令再探

    一   root、alias、index、try_files辨析 ①  前言回顾 章神的博客 try_files基础知识  配置try_files实现内容重定向 root和alias指令辨析   index和autoindex指令回顾 absolute_redirect  absolute_redirect port_in_redirect 响应Location形式 try_files的语法规则 nginx 301重定向踩坑记录   深度硬核文:nginx的

    2024年01月17日
    浏览(43)
  • ES鉴权设计以及相关探讨

    鉴权,分别由 鉴 和 权 组成 鉴 : 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致 权 : 完成身份的 鉴 后,还需要判断用户是否有相关操作的权限。 因此对于某一个用户来说,通常情况下,需要完成 鉴 和 权 才能够满足一个完整的业务场景,因此

    2024年02月20日
    浏览(33)
  • RabbitMQ鉴权设计以及相关探讨

    鉴权,分别由 鉴 和 权 组成 鉴 : 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致 权 : 完成身份的 鉴 后,还需要判断用户是否有相关操作的权限。 因此对于某一个用户来说,通常情况下,需要完成 鉴 和 权 才能够满足一个完整的业务场景,因此

    2024年02月20日
    浏览(31)
  • 轴承寿命相关细节的研究

    数据集PHM2012 介绍一下IEEE PHM2012数据集_phm2012轴承数据集-CSDN博客 标签如何设置的? 剩余寿命预测的标签设置_rul 标签_兔子牙丫丫的博客-CSDN博客 参考自刘硕师兄的毕业答辩PPT     图 4 . 9    训练数据的切分方法  数据段的重叠切分,不仅可以覆盖更多的标签数据序列,而且可

    2024年02月07日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包