nginx使用ngx.req.get_body_data()获取不到请求体内容
来源:互联网 发布:json null空值处理 编辑:程序博客网 时间:2024/05/29 16:50
Nginx中可以使用在lua块中使用ngx.req.get_body_data()获取http请求的消息体。
代码如下:
server {
listen 7070;
charset utf-8;
server_name localhost;
location ~/yxl/(.*)/(.*) {
content_by_lua_block {
local data = ngx.req.get_body_data()
ngx.say(data)
}
}
}
但默认情况下可能会得到一个nil的结果。这是因为之前nginx的定位是消息转发,而不是处理消息体。若需要获取消息体,需要在打开获取消息体的开关。增加一行代码:lua_need_request_body on;
代码如下:
server {
listen 7070;
charset utf-8;
server_name localhost;
lua_need_request_body on;
location ~/yxl/(.*)/(.*) {
content_by_lua_block {
local data = ngx.req.get_body_data()
ngx.say(data)
}
}
}
如此即可顺利获取消息体的内容。
但上述方法强制本模块读取消息体,因此不推荐使用,获取消息体推荐使用以下方法,在获取消息体代码附近,增加一句ngx.req.read_body(),代码如下:
server {
listen 7070;
charset utf-8;
server_name localhost;
location ~/yxl/(.*)/(.*) {
content_by_lua_block {
ngx.req.read_body()
local data = ngx.req.get_body_data()
ngx.say(data)
}
}
}
- nginx使用ngx.req.get_body_data()获取不到请求体内容
- ngx.req和get/post参数获取
- Node.js中,获取req请求的原始IP
- 使用postman请求springmvc接口时,request获取不到数据
- 获取HttpURLConnection 响应体内容
- 请求获取不到静态资源
- 使用router.post()无法获取到req.body
- 关于req.params、req.param(name)、req.query、req.body等请求对象
- node+express----请求对象req
- http请求后台springMvc中获取不到请求参数
- [nginx源码分析]ngx内存池实现
- 使用socket发送struct结构体内容
- req
- nodejs在使用req.param('paramName')获取参数时控制台出现警告提示
- nodejs 之req.body req.query req.params 三种获取参数的方法
- ServletRequest获取不到getParameter和filter获取不到request请求中的Parameter
- nginx代理 获取不到客户端的真实IP问题
- Ajax提交请求后台获取不到session中的值
- 缓存之EHCache(二)
- location.replace()和location.href=进行跳转的区别
- HDU6026(最短路)
- vector结构体排序与priority优先级队列自动排序对比
- 优盘病毒清理方法与预防措施
- nginx使用ngx.req.get_body_data()获取不到请求体内容
- 可重入内置锁
- Android插件收集
- 教你用Fiddler在电脑上抓手机上的包
- ios开发证书,描述文件,bundle ID的关系
- 学习easyUI之初次使用
- Android开发性能优化(记录、自用)
- EditPlus4.0汉化+破解注册
- linux中安装pip后无法使用的问题