Длина содержимого NGINX LUA 1 потерянный байт

#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:

0a

Я думаю, проблема в символе перевода строки в конце.

ngx.say всегда добавляет перевод строки
ngx.print это просто вывод

проблема решена

Символ перевода строки