• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua resty.http 代理请求时加号变成空格处理方法

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

铺垫知识

+号在http传输中,会转为空格,所以需要额外转义,转为%2B就可以了。

现象描述

今天遇到很奇怪的现象,前端web页面传过来的时间戳是 2020-12-08T00:00:00+08:00 ,我在nginx+lua里面使用 resty.http 来转发请求的时候,发现到服务器端的时间是这样的:2020-12-08T00:00:00 08:00 , 显然,00与08之间的加号没了,转为了空格。

解决办法

在lua代码里面,把+号都替换成%2B ,如

local http = require("resty.http")
local httpc = http.new()

.... 省去获取参数的代码

local new_post_data = ""
for k,v in pairs(post_data) do
    if type(v) == "string" then
        if string.find(v,"Date") ~= nil then  -- v这个是前端传过来的值,
            v = string.gsub(v,"%+08","%%2B08")  -- 关键点,转换空格 
        end
    end
    new_post_data = new_post_data .. k .. "=" .. v .. "&"
done

local post_body_len = string.len(post_body)
body = string.sub(post_body,0,post_body_len-1)  -- 去掉最后一位与符号&
res,err = httpc:request_uri(url, {
    method = method, -- POST 
    body = body,
    headers = headers, -- 自己定义一个吧
    keepalive_timeout = 60000,  -- ms
})

这样到了服务器端,就没问题了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
nginx+lua 记一次特殊字符导致"丢包"问题发布时间:2022-07-22
下一篇:
luamathlibary发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap