300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 解决openresty http客户端不支持https的问题

解决openresty http客户端不支持https的问题

时间:2019-01-13 19:22:12

相关推荐

解决openresty http客户端不支持https的问题

OpenResty默认没有提供Http客户端,需要使用第三方提供;当然我们可以通过ngx.location.capture 去方式实现,但它只能发送一个子请求。

第三方基本是以lua-resty-http为代表,这个类库如果去访问http和正规的https是没有问题,也挺好用的,但如果访问使用山寨证书的请求会出一些错误,比如:handshake failed,socket error等等之类的错误。对于种我的解决办法是使用curl,可以很好解决这个问题,现在来看算是比较完美的。

具体代码如下:

local curl = require("luacurl")local function postJson(url,postData,c)local result = { }if c == nil thenc = curl.new()endc:setopt(curl.OPT_URL, url)c:setopt(curl.OPT_SSL_VERIFYHOST,0)c:setopt(curl.OPT_SSL_VERIFYPEER,false)c:setopt(curl.OPT_POST,true)c:setopt(curl.OPT_HTTPHEADER, "Content-Type: application/json")c:setopt(curl.OPT_POSTFIELDS, postData)c:setopt(curl.OPT_WRITEDATA, result)c:setopt(curl.OPT_WRITEFUNCTION, function(tab, buffer)table.insert(tab, buffer)return #bufferend)local ok = c:perform()return ok, table.concat(result)endlocal ok,html = postJson(serverUrl,data);if ok thenngx.say(html)end

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。