[nginx]lua控制响应头
前言
适用场景:添加CDN缓存时间、操作set-cookie、标记业务数据类型等。
获取响应头
- 指令:
ngx.resp.get_headers - 语法:
headers = ngx.resp.get_headers(max_headers?,raw?) - 环境:
set_by_lua*、rewrite_by_lua*、access_by_lua*、content_by_lua*、header_filter_by_lua*、body_filter_by_lua*、log_by_lua*、balancer_by_lua* - 含义:读取当前请求的响应头,并返回一个lua的table类型的数据
- 示例
server {
# ...
location /testlua {
content_by_lua_block {
local ngx = require "ngx";
local h = ngx.resp.get_headers()
for k,v in pairs(h) do
ngx.say(string.format("Header name: %s, value: %s",k,v))
end
-- 从table中读取指定响应头的值
ngx.say(h["connection"])
}
}
}
请求测试:
curl -i http://192.168.0.10/testlua
修改响应头
- 指令:
ngx.header.HEADER - 语法:
ngx.header.HEADER = VALUE - 环境:
rewrite_by_lua*、access_by_lua*、content_by_lua*、header_filter_by_lua*、body_filter_by_lua*、log_by_lua*、balancer_by_lua* - 含义:对响应头进行修改、清除、添加等操作。(输出响应头时,默认会将“
_”替换为"-") - 示例
localtion /testlua {
content_by_lua_block {
local ngx = require "ngx";
ngx.header.myrespheader = "helloworld"
ngx.header.content_type = 'test/plain'
ngx.header.second_header = "hellonginx" -- 下划线会变成中划线
ngx.header["third_header"] = "hellolua" -- 等同于 ngx.header.third_header = "hellolua"
ngx.header["forth_header"] = {"test10=10;env=10","test11=11;env=11"} -- 一个响应头里面设置两个值
local h = ngx.resp.get_headers() -- 读取响应头
for k,v in pairs(h) do
ngx.say(string.format("Header name: %s, value: %s",k,v))
end
}
}
请求测试:
curl -i http://192.168.0.10/testlua
HTTP/2 200
server: openresty
date: Sun, 28 May 2023 02:39:26 GMT
content-type: test/plain
myrespheader: helloworld
second-header: hellonginx
third-header: hellolua
Header name: second-header, value: hellonginx
Header name: third-header, value: hellolua
Header name: myrespheader, value: helloworld
Header name: content-type, value: test/plain
Header name: connection, value: close
删除响应头
如果要删除一个响应头,将其赋值为 nil 即可,例如:
ngx.header["second_header"] = nil
参考
- 《Nginx实战:基于lua语言的配置、开发与架构详解》
[nginx]lua控制响应头的更多相关文章
- Nginx配置各种响应头防止XSS,点击劫持,frame恶意攻击
为什么要配置HTTP响应头? 不知道各位有没有被各类XSS攻击.点击劫持 (ClickJacking. frame 恶意引用等等方式骚扰过,百度联盟被封就有这些攻击的功劳在里面.为此一直都在搜寻相关防 ...
- 修改nginx的http响应头server字段
信息泄露类型:HTTP服务器响应头Server字段信息泄露 示例: 解决: 需要重新对nginx编译安装: [root@localhost ~]# tar zxvf nginx-1.8.1.tar.g ...
- 【Nginx】修改响应头,根据不同请求IP重定向到不同IP
背景: 使用CAS登录的过程中会涉及到三次重定向,如果在同一个局域网内,是没有任何问题的,但如果涉及到跨网访问,这个问题就比较蛋疼了. 解决思路: 通过Nginx对要访问的系统进行代理,根据请求IP来 ...
- nginx 定义:响应头和请求头
1) 响应头 add_header 例如: add_header Cache-Control no-cache; add_header Access-Control-Allow-Origin *; a ...
- nginx 添加response响应头
硬添
- nginx替换响应头(重点:如何在替换时加上if判断)
在实现微信小程序内嵌非业务域名时,通过nginx做镜像网站绕过小程序业务域名检测,但有一些表单页面提交后会返回一个302状态,由响应头Location的值决定提交成功后的跳转地址.那么问题来了,这个地 ...
- OpenResty(Nginx+Lua)开发入门
Nginx入门 本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: nginx启动.关闭.重启 http://www.cnblogs.com/derekchen/archi ...
- 高并发 Nginx+Lua OpenResty系列(2)——Nginx Lua API
Nginx Lua API 和一般的Web Server类似,我们需要接收请求.处理并输出响应.而对于请求我们需要获取如请求参数.请求头.Body体等信息:而对于处理就是调用相应的Lua代码即可:输出 ...
- (转)X-Frame-Options响应头缺失漏洞
原文:https://blog.csdn.net/ljl890705/article/details/78071601 x-frame-options响应头缺失漏洞. 故名思意,就是返回的响应头信息中 ...
- Web安全 之 X-Frame-Options响应头配置
最近项目处于测试阶段,在安全报告中存在" X-Frame-Options 响应头缺失 "问题,显示可能会造成跨帧脚本编制攻击,如下图: X-Frame-Options: 值有三个: ...
随机推荐
- OCR 文字检测(Differentiable Binarization --- DB)
文本检测 基于分割的做法(如蓝色箭头所示): 传统的pipeline使用固定的阈值对于分割后的热力图进行二值化处理 首先,它们设置了固定的阈值,用于将分割网络生成的概率图转换为二进制图像 然后,用一些 ...
- 2021-04-25:给定一个数组arr,和一个正数M,返回在arr的子数组在长度不超过M的情况下,求最大的累加和。
福大大 答案2021-04-25: 前缀和+左大右小的双端队列.时间太晚了,所以写得简单. 代码用golang编写.代码如下: package main import ( "containe ...
- .net 温故知新【11】:Asp.Net Core WebAPI 入门使用及介绍
在Asp.Net Core 上面由于现在前后端分离已经是趋势,所以asp.net core MVC用的没有那么多,主要以WebApi作为学习目标. 一.创建一个WebApi项目 我使用的是VS2022 ...
- 聊聊MAUI、WinUI3和WPF的优势及劣势
今天在群里聊到WinUI3的学习及发展,还有他那堪比玩具的使用体验,正好梳理一篇关于WinUI3.MAUI和WPF优劣势,我整理的不是很好,所以又让ChatGPT在生成了一遍,感觉整体还可以.看完可以 ...
- CMU15445 (Fall 2020) 之 Project#1 - Buffer Pool 详解
前言 去年暑假完成了 CMU15-445 Fall 2019 的四个实验,分别对应下述博客: CMU15445 (Fall 2019) 之 Project#1 - Buffer Pool 详解 CMU ...
- 【LeetCode.384打乱数组】Knuth洗牌算法详解
前两天看网易面筋得知网易云的随机歌曲播放使用了这个算法,遂找题来做做学习一下 打乱数组 https://leetcode.cn/problems/shuffle-an-array/ 给你一个整数数组 ...
- CKS 考试题整理 (10)-Dockerfile检测
Task 分析和编辑给定的Dockerfile /cks/docker/Dockerfile(基于ubuntu:16.04 镜像), 并修复在文件中拥有的突出的安全/最佳实践问题的两个指令. 分析和编 ...
- 牛客题解-mixup2混乱的奶牛(状压dp)
题解-mixup2混乱的奶牛 [原题连接](1026-mixup2混乱的奶牛_2021秋季算法入门班第八章习题:动态规划2 (nowcoder.com)) 题目描述 混乱的奶牛 [Don Piele, ...
- 前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求
前端Vue自定义加载中loading加载结束end组件 可用于分页展示 页面加载请求, 请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id=132 ...
- 一文解开主流开源变更数据捕获技术之Flink CDC的入门使用
@ 目录 概述 定义 什么是CDC? CDC的分类 特性 应用场景 支持数据源 实战 Flink DataStream方式代码示例 FlinkSQL方式代码示例 概述 定义 flink-cdc-con ...