#nginx #lua #openresty
#nginx #lua #openresty
Вопрос:
У меня интересная ошибка и проблема с методом
Lua упоминает, что длина js_content
переменной составляет 80 байт.
Но когда я не использую "Content-Length"
заголовок, firefox упоминает, что передается 81 байт данных.
Я не знаю, откуда взялся избыток 1 байт, я буду рад, если вы сможете помочь, приложение, которое я написал с помощью VBNet, выдает ошибку, когда я заметил, что "Content-Length"
заголовок составляет 80 байт при анализе данных json с моего удаленного сервера, но он отлично работает, когда я добавляю 1.
local ref_array = {1, 2, 3}
local sArray = {}
sArray["1"] = "One"
sArray["2"] = "Two"
sArray["3"] = "Tree"
local ctable = {}
for index, data in ipairs(ref_array) do
if sArray[tostring(data)] ~= nil then
local cinfo = {}
cinfo["X"] = tostring(data)
cinfo["Y"] = sArray[tostring(data)]
cinfo["Z"] = 0
table.insert(ctable, cinfo)
end
end
local js_content = cjson.encode(ctable)
ngx.header['Content-Type'] = 'application/json'
ngx.header['Content-Length'] = #js_content -- 80 byte
ngx.say(js_content)
ngx.exit(200)
Комментарии:
1. Не могли бы вы предоставить нам первый байт сообщения при отправке без заданной длины содержимого?
2. 80 Байт:
[{"Y":"One","X":"1","Z":0},{"Y":"Two","X":"2","Z":0},{"Y":"Tree","X":"3","Z":0}]
если я не добавлю заголовок «Длина содержимого», firefox сообщает, что передается 81 байт. Но мой контент составляет 80 байт: С
Ответ №1:
Я думаю, проблема в символе перевода строки в конце.
ngx.say
всегда добавляет перевод строки
ngx.print
это просто вывод
проблема решена